76 lines
2.2 KiB
TypeScript
76 lines
2.2 KiB
TypeScript
"use client";
|
|
|
|
import React from "react";
|
|
import { useRouter } from "next/navigation";
|
|
import { useForm } from "react-hook-form";
|
|
import { zodResolver } from "@hookform/resolvers/zod";
|
|
import { useQuery } from "@tanstack/react-query";
|
|
import {
|
|
UserApi,
|
|
userUpdateSchema,
|
|
type UserUpdateData,
|
|
} from "@/entities/user";
|
|
import { ENDPOINT } from "@/shared/config";
|
|
import { useMutationWrapper, useAlertStore } from "@/shared/lib";
|
|
import { UsersForm } from "./users-form";
|
|
|
|
interface ModifyPageProps {
|
|
userUnqId: string;
|
|
}
|
|
|
|
export function ModifyPage({ userUnqId }: ModifyPageProps) {
|
|
const router = useRouter();
|
|
const alert = useAlertStore((state) => state.setMessage);
|
|
|
|
const { data: userData } = useQuery({
|
|
queryKey: [ENDPOINT.USER_SERVICE.USERS, userUnqId],
|
|
queryFn: () => UserApi.findByUserUnqId(userUnqId),
|
|
enabled: !!userUnqId,
|
|
});
|
|
|
|
const form = useForm<UserUpdateData>({
|
|
resolver: zodResolver(userUpdateSchema),
|
|
defaultValues: {
|
|
userId: userData?.userId ?? "",
|
|
userName: userData?.userName ?? "",
|
|
email: userData?.email ?? "",
|
|
userStateCode: userData?.userStateCode ?? "",
|
|
pswdHnt: userData?.pswdHnt ?? "",
|
|
pswdAns: userData?.pswdAns ?? "",
|
|
mphn: userData?.mphn ?? "",
|
|
telno: userData?.telno ?? "",
|
|
zip: userData?.zip ?? "",
|
|
addr: userData?.addr ?? "",
|
|
daddr: userData?.daddr ?? "",
|
|
laeSeCd: userData?.laeSeCd ?? "",
|
|
ogdpSeCd: userData?.ogdpSeCd ?? "",
|
|
aprvYn: userData?.aprvYn ?? "",
|
|
expryYmd: userData?.expryYmd ?? "",
|
|
instSeCd: userData?.instSeCd ?? "",
|
|
dtlInstCd: userData?.dtlInstCd ?? "",
|
|
aprvYmd: userData?.aprvYmd ?? "",
|
|
enoCd: userData?.enoCd ?? "",
|
|
},
|
|
});
|
|
|
|
const { mutateAsync: updateUser } = useMutationWrapper({
|
|
mutationFn: (data: UserUpdateData) => UserApi.updateUser(userUnqId, data),
|
|
onSuccess: () => {
|
|
alert("회원 정보가 수정되었습니다.", router.back);
|
|
},
|
|
});
|
|
|
|
return (
|
|
<div className="card card-border !mt-6">
|
|
<div className="card-header">
|
|
<h3 className="text-2xl font-medium text-label">회원 정보 수정</h3>
|
|
</div>
|
|
<UsersForm
|
|
userId={userData?.userId}
|
|
form={form}
|
|
handleSave={updateUser}
|
|
/>
|
|
</div>
|
|
);
|
|
}
|