From a9739bdba594f5888544bccfef91c5aedc846eaf Mon Sep 17 00:00:00 2001 From: bicochan Date: Wed, 2 Apr 2025 14:49:35 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/cs/src/pages/image/api/image-service.ts | 2 +- .../src/pages/image/model/image-interface.ts | 4 ++-- apps/cs/src/pages/image/ui/create-page.tsx | 24 +++++++++++++------ apps/cs/src/pages/image/ui/image-form.tsx | 2 +- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/apps/cs/src/pages/image/api/image-service.ts b/apps/cs/src/pages/image/api/image-service.ts index c7fb56240..af5d95bbe 100644 --- a/apps/cs/src/pages/image/api/image-service.ts +++ b/apps/cs/src/pages/image/api/image-service.ts @@ -31,7 +31,7 @@ export class ImageApiService implements ImageService { return response.data; } - public async updateImage(imgSn: string, data: Partial): Promise { + public async updateImage(imgSn: string, data: ImageFormData): Promise { const response = await client.put( `${ENDPOINT.CMS_SERVICE.IMAGES}/${imgSn}`, data, diff --git a/apps/cs/src/pages/image/model/image-interface.ts b/apps/cs/src/pages/image/model/image-interface.ts index 4933bc860..7748589c7 100644 --- a/apps/cs/src/pages/image/model/image-interface.ts +++ b/apps/cs/src/pages/image/model/image-interface.ts @@ -35,8 +35,8 @@ export const imageFormSchema = z.object({ sortSeq: z.number(), imgTypeCd: z.string(), atflYn: z.string(), - atflCd: z.string().optional(), - lnkgUrlAddr: z.string().optional(), + atflCd: z.string().nullish(), + lnkgUrlAddr: z.string().nullish(), useYn: z.string(), }); diff --git a/apps/cs/src/pages/image/ui/create-page.tsx b/apps/cs/src/pages/image/ui/create-page.tsx index 715091513..5b3ea3924 100644 --- a/apps/cs/src/pages/image/ui/create-page.tsx +++ b/apps/cs/src/pages/image/ui/create-page.tsx @@ -1,11 +1,25 @@ "use client"; +import { useRouter } from "next/navigation"; import { useForm } from "react-hook-form"; -import { ImageForm } from "./image-form"; -import { imageFormSchema, type ImageFormData } from "../model/image-interface"; import { zodResolver } from "@hookform/resolvers/zod"; +import { useMutation } from "@tanstack/react-query"; +import { useAlertStore } from "@/shared/lib/use-alert-store"; +import { imageFormSchema, type ImageFormData } from "../model/image-interface"; +import { ImageApi } from "../api/image-service"; +import { ImageForm } from "./image-form"; function CreatePage() { + const router = useRouter(); + const { setMessage: alert } = useAlertStore((state) => state); + + const { mutateAsync: createImage } = useMutation({ + mutationFn: (data: ImageFormData) => ImageApi.createImage(data), + onSuccess: () => { + alert("등록되었습니다.", router.back); + }, + }); + const form = useForm({ resolver: zodResolver(imageFormSchema), defaultValues: { @@ -13,16 +27,12 @@ function CreatePage() { }, }); - const handleSave = async (data: ImageFormData) => { - console.log(data); - }; - return (

이미지 등록

- +
); } diff --git a/apps/cs/src/pages/image/ui/image-form.tsx b/apps/cs/src/pages/image/ui/image-form.tsx index 19a63eea9..81ab21726 100644 --- a/apps/cs/src/pages/image/ui/image-form.tsx +++ b/apps/cs/src/pages/image/ui/image-form.tsx @@ -55,7 +55,7 @@ function ImageForm({ form, imgSn, handleSave, handleDelete }: ImageFormProps) { await handleConfirm(async () => { if (await confirm(confirmMessage)) { - handleSave(data); + await handleSave(data); } }); };