Skip to content

Commit e840ad3

Browse files
committed
fix: 기존 매칭 신청 로직을 소켓으로 변경
1 parent 67ef14f commit e840ad3

5 files changed

Lines changed: 16 additions & 62 deletions

File tree

src/apis/matching/dto.ts

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import type { BaseSuccessResponse } from '@apis/core/dto';
2-
31
type RequestStatusEnum = 'accepted' | 'rejected' | 'pending';
42

53
// 매칭 요청
@@ -10,16 +8,6 @@ export interface CreateMatchingRequest {
108
message: string;
119
}
1210

13-
// response
14-
export type CreateMatchingResponse = BaseSuccessResponse<CreateMatchingData>;
15-
16-
export interface CreateMatchingData {
17-
id: number; // matchingId
18-
chatRoomId: number;
19-
requesterId: number;
20-
targetId: number;
21-
}
22-
2311
// 최근 매칭 조회 (채팅방 리스트에서)
2412
export interface LatestMatchingData {
2513
id?: number;
@@ -56,20 +44,3 @@ export interface PostImageDto {
5644
url: string;
5745
orderNum: number;
5846
}
59-
60-
// 매칭 요청 수락 및 거절
61-
// request
62-
export interface ModifyMatchingStatusRequest {
63-
requestStatus: 'accept' | 'reject';
64-
}
65-
66-
// response
67-
export type ModifyMatchingStatusResponse = BaseSuccessResponse<ModifyMatchingStatusData>;
68-
69-
export interface ModifyMatchingStatusData {
70-
id: number; // matchingId
71-
requesterId: number;
72-
targetId: number;
73-
requestStatus: string;
74-
chatRoomId: number;
75-
}

src/apis/matching/index.ts

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/pages/Chats/MatchingRoom/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ const MatchingRoom: React.FC = () => {
6565
if (JSON.stringify(data) === '{}') {
6666
setHasNewMatching(false);
6767
} else {
68+
setHasNewMatching(true);
6869
setAllMatchings([...allMatchings, data]);
6970
}
7071
};

src/pages/Home/OOTD/Feed/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,13 @@ const Feed: React.FC<FeedProps> = ({ feed }) => {
152152

153153
socket.on('error', (data) => {
154154
setModalContent(data);
155-
setIsMatchingCommentBottomSheetOpen(false);
156155
setIsStatusModalOpen(true);
157156

158157
// 리스너가 중복 등록되지 않도록 바로 정리
159158
socket.off('error');
160159
});
160+
161+
setIsMatchingCommentBottomSheetOpen(false);
161162
};
162163

163164
// 게시글 옵션(더보기) 바텀시트

src/pages/Profile/index.tsx

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import { useRecoilValue } from 'recoil';
55

66
import theme from '@styles/theme';
77

8-
import { createMatchingApi } from '@apis/matching';
98
import { getUserPostListApi } from '@apis/post';
109
import { getUserInfoApi } from '@apis/user';
10+
import { useSocket } from '@context/SocketProvider';
1111
import { OtherUserAtom } from '@recoil/util/OtherUser';
1212
import { getCurrentUserId } from '@utils/getCurrentUserId';
1313

@@ -56,6 +56,7 @@ const Profile: React.FC = () => {
5656
const [isModalOpen, setIsModalOpen] = useState(false);
5757
const [modalContent, setModalContent] = useState('');
5858
const navigate = useNavigate();
59+
const socket = useSocket('matching');
5960

6061
const { userId } = useParams<{ userId: string }>();
6162
const profileUserId = Number(userId);
@@ -81,26 +82,22 @@ const Profile: React.FC = () => {
8182
fetchData();
8283
}, [profileUserId]);
8384

84-
const createMatching = async (message: string) => {
85-
const matchingRequestData = {
85+
const createMatching = (comment: string) => {
86+
socket.emit('requestMatching', {
8687
requesterId: currentUserId,
8788
targetId: otherUser?.id || profileUserId,
88-
message: message,
89-
};
89+
message: comment,
90+
});
9091

91-
try {
92-
await createMatchingApi(matchingRequestData);
93-
handleModalOpen(`${userInfo?.nickname}님에게 대표 OOTD와 \n한 줄 메세지를 보냈어요!`);
94-
} catch (error) {
95-
console.error('매칭 신청 오류:', error);
96-
handleModalOpen('매칭 신청에 실패했습니다.');
97-
}
98-
};
92+
socket.on('error', (data) => {
93+
setModalContent(data);
94+
setIsModalOpen(true);
95+
96+
// 리스너가 중복 등록되지 않도록 바로 정리
97+
socket.off('error');
98+
});
9999

100-
const handleModalOpen = (message: string) => {
101100
setIsBottomSheetOpen(false);
102-
setModalContent(message);
103-
setIsModalOpen(true);
104101
};
105102

106103
if (isLoading) return <Loading />;

0 commit comments

Comments
 (0)