@@ -66,13 +66,13 @@ const groomingMode = {
66
66
let rooms = [ ] ;
67
67
const groomings = { } ;
68
68
69
- const handleErrors = ( errorFunctionName , roomID , socket ) => {
69
+ const handleErrors = ( errorFunctionName , roomID , socket , isRoomExpired ) => {
70
70
if ( ! socket ) {
71
71
console . log ( "Socket not found on handle join." , errorFunctionName , roomID , rooms ) ;
72
72
return null ;
73
73
}
74
- if ( rooms && ! rooms . some ( room => room . roomID === roomID ) ) {
75
- console . log ( "Room is deleted, info shown to the user." , errorFunctionName , roomID ) ;
74
+ if ( ( rooms && ! rooms . some ( room => room . roomID === roomID ) ) || isRoomExpired ) {
75
+ console . log ( "Room is expired or deleted, info shown to the user." , errorFunctionName , roomID ) ;
76
76
socket . emit ( "encounteredError" , {
77
77
id : 1 ,
78
78
message :
@@ -196,10 +196,17 @@ const removeUserFromOngoingGrooming = (roomID, userID) => {
196
196
delete groomings [ roomID ] . participants [ userID ] ;
197
197
} ;
198
198
199
+ const checkIsRoomExpired = ( roomID ) => {
200
+ const currentTime = new Date ( ) . getTime ( ) ;
201
+ const expiredRoomIDs = rooms . filter ( room => room . expiredAt < currentTime ) . map ( room => room . roomID ) ;
202
+ return expiredRoomIDs . includes ( roomID ) ;
203
+ }
204
+
199
205
const updateParticipantsVote = ( data , credentials , roomID , socket ) => {
200
206
const user = getCurrentUser ( credentials , socket ) ;
201
- if ( ! user ) {
202
- return handleErrors ( "updateParticipantsVote" , roomID , socket ) ;
207
+ const isRoomExpired = checkIsRoomExpired ( roomID ) ;
208
+ if ( ! user || isRoomExpired ) {
209
+ return handleErrors ( "updateParticipantsVote" , roomID , socket , isRoomExpired ) ;
203
210
}
204
211
205
212
const userLobbyData = groomings [ user . roomID ] . participants [ user . userID ] ;
@@ -325,8 +332,9 @@ const calculateScore = (mode, participants, roomID) => {
325
332
326
333
const getResults = ( credentials , roomID , socket ) => {
327
334
const user = getCurrentUser ( credentials , socket ) ;
328
- if ( ! user ) {
329
- return handleErrors ( "getResults" , roomID , socket ) ;
335
+ const isRoomExpired = checkIsRoomExpired ( roomID ) ;
336
+ if ( ! user || isRoomExpired ) {
337
+ return handleErrors ( "getResults" , roomID , socket , isRoomExpired ) ;
330
338
}
331
339
332
340
groomings [ user . roomID ] . isResultShown = true ;
@@ -337,8 +345,9 @@ const getResults = (credentials, roomID, socket) => {
337
345
338
346
const setIssues = ( data , credentials , roomID , socket ) => {
339
347
const user = getCurrentUser ( credentials , socket ) ;
340
- if ( ! user ) {
341
- return handleErrors ( "setIssues" , roomID , socket ) ;
348
+ const isRoomExpired = checkIsRoomExpired ( roomID ) ;
349
+ if ( ! user || isRoomExpired ) {
350
+ return handleErrors ( "setIssues" , roomID , socket , isRoomExpired ) ;
342
351
}
343
352
344
353
groomings [ user . roomID ] . issues = data ;
@@ -348,8 +357,9 @@ const setIssues = (data, credentials, roomID, socket) => {
348
357
349
358
const updateTimer = ( data , credentials , roomID , socket ) => {
350
359
const user = getCurrentUser ( credentials , socket ) ;
351
- if ( ! user ) {
352
- return handleErrors ( "updateTimer" , roomID , socket ) ;
360
+ const isRoomExpired = checkIsRoomExpired ( roomID ) ;
361
+ if ( ! user || isRoomExpired ) {
362
+ return handleErrors ( "updateTimer" , roomID , socket , isRoomExpired ) ;
353
363
}
354
364
355
365
groomings [ user . roomID ] . timer = data ;
@@ -359,8 +369,9 @@ const updateTimer = (data, credentials, roomID, socket) => {
359
369
360
370
const updateAvatar = ( data , credentials , roomID , socket ) => {
361
371
const user = getCurrentUser ( credentials , socket ) ;
362
- if ( ! user ) {
363
- return handleErrors ( "updateAvatar" , roomID , socket ) ;
372
+ const isRoomExpired = checkIsRoomExpired ( roomID ) ;
373
+ if ( ! user || isRoomExpired ) {
374
+ return handleErrors ( "updateAvatar" , roomID , socket , isRoomExpired ) ;
364
375
}
365
376
if ( ! groomings [ user . roomID ] ) {
366
377
return ;
@@ -377,8 +388,9 @@ const updateAvatar = (data, credentials, roomID, socket) => {
377
388
378
389
const resetVotes = ( credentials , roomID , socket ) => {
379
390
const user = getCurrentUser ( credentials , socket ) ;
380
- if ( ! user ) {
381
- return handleErrors ( "resetVotes" , roomID , socket ) ;
391
+ const isRoomExpired = checkIsRoomExpired ( roomID ) ;
392
+ if ( ! user || isRoomExpired ) {
393
+ return handleErrors ( "resetVotes" , roomID , socket , isRoomExpired ) ;
382
394
}
383
395
384
396
groomings [ user . roomID ] . isResultShown = false ;
@@ -405,6 +417,10 @@ const logRooms = () => {
405
417
}
406
418
407
419
const checkRoomExistance = ( roomId ) => {
420
+ const isRoomExpired = checkIsRoomExpired ( roomId ) ;
421
+ if ( isRoomExpired ) {
422
+ return false ;
423
+ }
408
424
return rooms . some ( ( room ) => room . roomID === roomId ) ;
409
425
} ;
410
426
@@ -458,8 +474,9 @@ const cleanRoomsAndUsers = () => {
458
474
459
475
const updateNickName = ( credentials , newNickName , roomID , socket ) => {
460
476
const user = getCurrentUser ( credentials , socket ) ;
461
- if ( ! user ) {
462
- return handleErrors ( "updateNickName" , roomID , socket ) ;
477
+ const isRoomExpired = checkIsRoomExpired ( roomID ) ;
478
+ if ( ! user || isRoomExpired ) {
479
+ return handleErrors ( "updateNickName" , roomID , socket , isRoomExpired ) ;
463
480
}
464
481
465
482
user . nickname = newNickName ;
0 commit comments