Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x | import { apiV2 } from '@/api/core';
import {
CreateGroupPayload,
CreateGroupResponse,
GetGroupDetailsResponse,
GetGroupsPayload,
GetGroupsResponse,
GetMyGroupsPayload,
GetMyGroupsResponse,
GroupIdParams,
KickGroupMemberParams,
PreUploadGroupImageResponse,
} from '@/types/service/group';
export const groupServiceRemote = () => ({
// 모임 목록 조회 (GET /api/v2/groups)
getGroups: async (payload: GetGroupsPayload): Promise<GetGroupsResponse> => {
const params = new URLSearchParams();
if (payload.keyword) {
params.append('keyword', payload.keyword);
}
if (payload.cursor !== undefined) {
params.append('cursor', payload.cursor.toString());
}
params.append('size', payload.size.toString());
return apiV2.get<GetGroupsResponse>(`/groups?${params.toString()}`);
},
// 내 모임 목록 조회 (GET /api/v2/groups/me) :스케줄러 페이지
getMyGroups: async (payload: GetMyGroupsPayload): Promise<GetMyGroupsResponse> => {
const params = new URLSearchParams();
params.append('type', payload.type);
if (payload.cursor !== undefined) {
params.append('cursor', payload.cursor.toString());
}
params.append('size', payload.size.toString());
if (payload.filter) {
params.append('filter', payload.filter);
}
if (payload.includeStatuses && payload.includeStatuses.length > 0) {
payload.includeStatuses.forEach((status) => {
params.append('includeStatuses', status);
});
}
if (payload.excludeStatuses && payload.excludeStatuses.length > 0) {
payload.excludeStatuses.forEach((status) => {
params.append('excludeStatuses', status);
});
}
if (payload.myStatuses && payload.myStatuses.length > 0) {
payload.myStatuses.forEach((status) => {
params.append('myStatuses', status);
});
}
return apiV2.get<GetMyGroupsResponse>(`/groups/me?${params.toString()}`);
},
// 모임 이미지 사전 업로드 (POST /groups/images/upload) - multipart/form-data
createGroup: (payload: CreateGroupPayload) => {
return apiV2.post<CreateGroupResponse>('/groups/create', payload);
},
editGroup: (params: GroupIdParams, payload: CreateGroupPayload) => {
return apiV2.patch<CreateGroupResponse>(`/groups/${params.groupId}`, payload);
},
getGroupDetails: (params: GroupIdParams) => {
return apiV2.get<GetGroupDetailsResponse>(`/groups/${params.groupId}`);
},
attendGroup: (params: GroupIdParams) => {
return apiV2.post<GetGroupDetailsResponse>(`/groups/${params.groupId}/attend`);
},
leaveGroup: (params: GroupIdParams) => {
return apiV2.post<GetGroupDetailsResponse>(`/groups/${params.groupId}/left`);
},
deleteGroup: (params: GroupIdParams) => {
return apiV2.delete(`/groups/${params.groupId}`);
},
kickGroupMember: (params: KickGroupMemberParams) => {
return apiV2.post(`/groups/${params.groupId}/attendance/${params.targetUserId}/kick`);
},
uploadGroupImages: (payload: FormData) => {
return apiV2.post<PreUploadGroupImageResponse>('/groups/images/upload', payload);
},
});
|