"use client"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { control } from "leaflet"; import React, { useEffect, useState } from "react"; import { Controller, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import * as z from "zod"; import Swal from "sweetalert2"; import { getBlog, postBlog } from "@/service/blog/blog"; import { id } from "date-fns/locale"; import { useRouter } from "next/navigation"; import { getInfoProfile, saveUser } from "@/service/auth"; import withReactContent from "sweetalert2-react-content"; import { Textarea } from "@/components/ui/textarea"; import { Button } from "@/components/ui/button"; import { Link } from "@/components/navigation"; import { useTranslations } from "next-intl"; const profileSchema = z.object({ username: z.string().optional(), fullname: z.string().optional(), memberIdentity: z.string().optional(), email: z.string().email("Format email tidak valid").optional(), address: z.string().optional(), phoneNumber: z.string().optional(), }); type Detail = { id: number; userId: any; firstName: string; username: string; fullname: string; memberIdentity: any; email: string; address: string; phoneNumber: any; message: string; userKeycloakId: string; }; const UbahProfile: React.FC = () => { const MySwal = withReactContent(Swal); const [detail, setDetail] = useState(); const [refresh, setRefresh] = useState(false); const t = useTranslations("LandingPage"); const router = useRouter(); type ProfileSchema = z.infer; const { control, handleSubmit, setValue, reset, formState: { errors }, } = useForm({ resolver: zodResolver(profileSchema), }); // useEffect(() => { // async function initState() { // const response = await getInfoProfile(); // const details = response?.data?.data; // setDetail(details); // // console.log("data", details); // } // initState(); // }, []); useEffect(() => { async function initState() { const response = await getInfoProfile(); const details = response?.data?.data; setDetail(details); reset({ username: details?.username, fullname: details?.fullname, memberIdentity: details?.memberIdentity, email: details?.email, address: details?.address, phoneNumber: details?.phoneNumber, }); } initState(); }, []); const save = async (data: ProfileSchema) => { // const requestData = { // ...data, // // userId: detail?.userKeycloakId, // firstName: detail?.fullname, // username: detail?.username, // memberIdentity: detail?.memberIdentity, // email: detail?.email, // address: detail?.address, // phoneNumber: detail?.phoneNumber, // // message: data.title, // }; const requestData = { id: detail?.id, userKeycloakId: detail?.userKeycloakId, // 🔥 tambahin ini username: data.username, fullname: data.fullname, email: data.email, memberIdentity: data.memberIdentity, address: data.address, phoneNumber: data.phoneNumber, }; console.log("FORM DATA:", data); console.log("REQUEST DATA:", requestData); const response = await saveUser(requestData); MySwal.fire({ title: "Sukses", text: "Data berhasil disimpan.", icon: "success", confirmButtonColor: "#3085d6", confirmButtonText: "OK", }).then(() => { router.refresh(); }); }; const onSubmit = (data: ProfileSchema) => { MySwal.fire({ title: "Simpan Data", text: "Apakah Anda yakin ingin menyimpan data ini?", icon: "warning", showCancelButton: true, cancelButtonColor: "#d33", confirmButtonColor: "#3085d6", confirmButtonText: "Simpan", }).then((result) => { if (result.isConfirmed) { save(data); } }); }; return (
👤

{t("changeProfile", { defaultValue: "Change Profile" })}

{t("pleaseChange", { defaultValue: "Please Change" })}

{detail !== undefined ? (
{/* ( )} /> */} } /> {errors.username?.message && (

{errors.username.message}

)}
{/*
*/} {/* ( )} /> */} {/* } /> {errors.fullname?.message && (

{errors.fullname.message}

)}
*/}
{/* ( )} /> */} } /> {errors.memberIdentity?.message && (

{errors.memberIdentity.message}

)}
{/* ( )} /> */} } /> {errors.email?.message && (

{errors.email.message}

)}
{/* ( )} /> */} } /> {errors.phoneNumber?.message && (

{errors.phoneNumber.message}

)}
{/* (