Skip to content

Commit 8ce2971

Browse files
committed
Prevent matching same users after rematch request
1 parent d8605e1 commit 8ce2971

File tree

4 files changed

+14
-2
lines changed

4 files changed

+14
-2
lines changed

backend/matching-service/src/handlers/matchHandler.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@ export interface MatchRequestItem {
3030
languages: string[];
3131
sentTimestamp: number;
3232
ttlInSecs: number;
33+
rejectedPartnerId?: string;
3334
}
3435

3536
const matches = new Map<string, Match>();
3637

3738
export const sendMatchRequest = async (
3839
matchRequest: MatchRequest,
39-
requestId: string
40+
requestId: string,
41+
rejectedPartnerId?: string
4042
): Promise<boolean> => {
4143
const { user, complexities, categories, languages, timeout } = matchRequest;
4244

@@ -48,6 +50,7 @@ export const sendMatchRequest = async (
4850
languages: languages,
4951
sentTimestamp: Date.now(),
5052
ttlInSecs: timeout,
53+
rejectedPartnerId: rejectedPartnerId,
5154
};
5255

5356
const sent = await sendRabbitMq(matchItem);

backend/matching-service/src/handlers/websocketHandler.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ export const handleWebsocketMatchEvents = (socket: Socket) => {
140140
MatchEvents.REMATCH_REQUEST,
141141
async (
142142
matchId: string,
143+
partnerId: string,
143144
rematchRequest: MatchRequest,
144145
callback: (result: boolean) => void
145146
) => {
@@ -156,7 +157,7 @@ export const handleWebsocketMatchEvents = (socket: Socket) => {
156157
requestId: requestId,
157158
});
158159

159-
const sent = await sendMatchRequest(rematchRequest, requestId);
160+
const sent = await sendMatchRequest(rematchRequest, requestId, partnerId);
160161
if (!sent) {
161162
socket.emit(MatchEvents.MATCH_REQUEST_ERROR);
162163
}

backend/matching-service/src/utils/mq_utils.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ export const matchUsers = (newRequest: string) => {
2424
return;
2525
}
2626

27+
if (
28+
uid === newRequestJson.rejectedPartnerId ||
29+
newRequestUid === pendingRequest.rejectedPartnerId
30+
) {
31+
continue;
32+
}
33+
2734
if (isMatch(newRequestJson, pendingRequest)) {
2835
matchingRequests.delete(uid);
2936
createMatch(pendingRequest, newRequestJson);

frontend/src/contexts/MatchContext.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,7 @@ const MatchProvider: React.FC<{ children?: React.ReactNode }> = (props) => {
373373
matchSocket.emit(
374374
MatchEvents.REMATCH_REQUEST,
375375
matchId,
376+
partner?.id,
376377
rematchRequest,
377378
(requested: boolean) => {
378379
clearTimeout(requestTimeout);

0 commit comments

Comments
 (0)