Skip to content

Commit adbd48f

Browse files
committed
Adjust collab delete algorithm
Now, it does a paranoid check against the room ID that initiated the room closure to prevent a close-room from affecting the 2nd user if they are in a different room already.
1 parent e2befa9 commit adbd48f

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

collab/main.go

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -323,17 +323,30 @@ func handleMessages(
323323
Content: "The session has been closed by a user.",
324324
}
325325
targetId := msgData.UserID
326-
data, err := persistMappings.Conn.HGetAll(context.Background(), targetId).Result()
326+
ownData, err := persistMappings.Conn.HGetAll(context.Background(), targetId).Result()
327327
if err != nil {
328328
log.Printf("Error retrieving data for userID %s: %v", targetId, err)
329329
} else {
330-
_, err1 := persistMappings.Conn.Del(context.Background(), targetId).Result()
331-
if err1 != nil {
332-
log.Printf("Error deleting data for userID %s: %v", targetId, err1)
330+
// delete room under user id if it curr matches the room ID
331+
ownRoomId := ownData["roomId"]
332+
if ownRoomId == client.roomID {
333+
_, err := persistMappings.Conn.Del(context.Background(), targetId).Result()
334+
if err != nil {
335+
log.Printf("Error deleting data for userID %s: %v", targetId, err)
336+
}
333337
}
334-
_, err2 := persistMappings.Conn.Del(context.Background(), data["otherUser"]).Result()
335-
if err2 != nil {
336-
log.Printf("Error deleting data for other user %s: %v", data["otherUser"], err2)
338+
// delete room under other user if it curr matches the room ID
339+
otherUser := ownData["otherUser"]
340+
othRoomId, err := persistMappings.Conn.HGet(context.Background(), otherUser, "roomId").Result()
341+
if err != nil {
342+
log.Printf("Error retrieving data for otherUser %s: %v", otherUser, err)
343+
} else {
344+
if othRoomId == client.roomID {
345+
_, err := persistMappings.Conn.Del(context.Background(), otherUser).Result()
346+
if err != nil {
347+
log.Printf("Error deleting data for other user %s: %v", otherUser, err)
348+
}
349+
}
337350
}
338351
}
339352
hub.broadcast <- closeMessage

0 commit comments

Comments
 (0)