diff --git a/src/api/service/group-service/index.ts b/src/api/service/group-service/index.ts index cff1b79a..ee833a80 100644 --- a/src/api/service/group-service/index.ts +++ b/src/api/service/group-service/index.ts @@ -40,7 +40,7 @@ export const groupServiceRemote = () => ({ // 모임 이미지 사전 업로드 (POST /groups/images/upload) - multipart/form-data createGroup: (payload: CreateGroupPayload) => { - return api.post('/groups/create', payload); + return apiV2.post('/groups/create', payload); }, getGroupDetails: (payload: GroupIdPayload) => { @@ -60,6 +60,6 @@ export const groupServiceRemote = () => ({ }, uploadGroupImages: (payload: FormData) => { - return api.post('/groups/images/upload', payload); + return apiV2.post('/groups/images/upload', payload); }, }); diff --git a/src/app/post-meetup/page.tsx b/src/app/post-meetup/page.tsx index 6da90290..6a16e467 100644 --- a/src/app/post-meetup/page.tsx +++ b/src/app/post-meetup/page.tsx @@ -16,7 +16,6 @@ import { } from '@/components/pages/post-meetup'; import { useCreateGroup } from '@/hooks/use-group/use-group-create'; import { CreateGroupFormValues, createGroupSchema } from '@/lib/schema/group'; -import { PreUploadGroupImageResponse } from '@/types/service/group'; const PostMeetupPage = () => { const { replace } = useRouter(); @@ -37,18 +36,11 @@ const PostMeetupPage = () => { onSubmit: createGroupSchema, }, onSubmit: async ({ value }) => { - const images = [] as PreUploadGroupImageResponse['images']; + value.images = value.images?.map((image, idx) => { + return { ...image, sortOrder: idx }; + }); - if (value.images) { - value.images.forEach((image, idx) => { - images.push({ - ...image, - sortOrder: idx, - }); - }); - } - - const res = await createGroup({ ...value, images: images }); + const res = await createGroup({ ...value }); replace(`/meetup/${res.id}`); }, diff --git a/src/lib/schema/group.ts b/src/lib/schema/group.ts index e312ec8b..a0cd3acf 100644 --- a/src/lib/schema/group.ts +++ b/src/lib/schema/group.ts @@ -18,6 +18,7 @@ export const createGroupSchema = z.object({ images: z .array( z.object({ + imageKey: z.string(), sortOrder: z.number(), imageUrl440x240: z.string(), imageUrl100x100: z.string(), diff --git a/src/types/service/group.ts b/src/types/service/group.ts index e25abfff..3a1aab39 100644 --- a/src/types/service/group.ts +++ b/src/types/service/group.ts @@ -81,14 +81,13 @@ export interface PreUploadGroupImagePayload { export interface PreUploadGroupImageResponse { images: { + imageKey: string; sortOrder: number; imageUrl440x240: string; imageUrl100x100: string; }[]; } -export type CreateGroupImagePayload = PreUploadGroupImageResponse; - export interface CreateGroupPayload { title: string; location: string; @@ -98,28 +97,54 @@ export interface CreateGroupPayload { tags?: string[] | null; description: string; maxParticipants: number; - images?: CreateGroupImagePayload['images'] | null; + images?: { + imageKey: string; + sortOrder: number; + }[]; } export interface CreateGroupResponse { id: number; title: string; - location: string; - locationDetail?: string | null; + status: 'RECRUITING' | 'FULL' | 'FINISHED'; + address: { + location: string; + locationDetail: string; + }; startTime: string; - endTime?: string; - tags?: string[] | null; + endTime: string; + tags: string[]; description: string; participantCount: number; maxParticipants: number; + createdAt: string; + updatedAt: string; createdBy: { userId: number; nickName: string; - profileImage?: string | null; + profileImage: string; + profileMessage: string; }; - createdAt: string; - updatedAt: string; - images?: CreateGroupImagePayload['images'] | null; + myMembership?: { + groupUserId: number; + role: 'HOST' | 'MEMBER'; + status: 'ATTEND' | 'LEFT'; + joinedAt: string; + leftAt: string; + } | null; + images: { + groupImageId: number; + imageKey: string; + sortOrder: number; + variants: { + variantId: number; + type: 'CARD_440_240' | 'THUMBNAIL_100_100'; + width: number; + height: number; + format: 'WEBP'; + imageUrl: string; + }[]; + }[]; } export interface GetGroupDetailsResponse {