diff --git a/src/api/games/patchGameParticipate.ts b/src/api/games/patchGameParticipate.ts index b315c7b4..48b4edb2 100644 --- a/src/api/games/patchGameParticipate.ts +++ b/src/api/games/patchGameParticipate.ts @@ -3,7 +3,7 @@ import { axiosInstance } from '@api/axiosInstance'; import { PatchGameParticipateApplyRequest } from '@type/api/games'; import { Game, Member } from '@type/models'; -export const patchMannerScoreReview = async ({ +export const patchGameParticipate = async ({ payload, gameId, memberId, diff --git a/src/hooks/mutations/useGameParticipateCreateMutation.ts b/src/hooks/mutations/useGameParticipateCreateMutation.ts new file mode 100644 index 00000000..0dfa78f1 --- /dev/null +++ b/src/hooks/mutations/useGameParticipateCreateMutation.ts @@ -0,0 +1,9 @@ +import { useMutation } from '@tanstack/react-query'; + +import { postGameParticipate } from '@api/games/postGameParticipate'; + +export const useGameParticipateCreateMutation = () => { + return useMutation({ + mutationFn: postGameParticipate, + }); +}; diff --git a/src/mocks/handlers/game.ts b/src/mocks/handlers/game.ts index 25b59069..5225e051 100644 --- a/src/mocks/handlers/game.ts +++ b/src/mocks/handlers/game.ts @@ -4,6 +4,7 @@ import { CommonErrorResponse } from '@type/api/error'; import { GetGameDetailResponse, GetGameMembersResponse, + PostGameParticipateRequest, PostGameRequest, PostGameResponse, } from '@type/api/games'; @@ -65,6 +66,34 @@ const mockGetGames = http.get('/api/games', ({ request }) => { return HttpResponse.json(games.slice(startIndex, startIndex + size)); }); +const mockPostGameParticipate = http.post< + { gameId: string }, + { data: PostGameParticipateRequest } +>('/api/games/:gameId/members', async ({ params, request }) => { + const gameId = Number(params.gameId); + const { + data: { memberId }, + } = await request.json(); + + const game = games.find((game) => game.id === gameId); + if (!game) { + return; + } + + game.members.push({ + id: memberId, + email: 'james123@pickple.kr', + nickname: 'james123', + introduction: '안녕하십니까. 제임스입니다. 아이고~ 사장님~~', + profileImageUrl: 'https://s3.amazonaws.com/pickple/james123.jpg', + mannerScore: 21, + mannerScoreCount: 30, + addressDepth1: '서울시', + addressDepth2: '강남구', + positions: ['C', 'PF'], + }); +}); + const mockGetGameMembers = http.get< { gameId: string }, DefaultBodyType, @@ -106,4 +135,10 @@ const mockGetGameDetail = http.get< return HttpResponse.json(game); }); -export const gameHandlers = [mockPostGame, mockGetGames, mockGetGameDetail, mockGetGameMembers]; +export const gameHandlers = [ + mockPostGame, + mockGetGames, + mockGetGameDetail, + mockGetGameMembers, + mockPostGameParticipate, +];