Skip to content

Commit 65fd9c3

Browse files
committed
Merge remote-tracking branch 'origin/post-ms6' into post-ms6-deployment
2 parents 327b667 + c4a2387 commit 65fd9c3

File tree

3 files changed

+34
-23
lines changed

3 files changed

+34
-23
lines changed

collab/main.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
verify "collab/verify"
5+
"context"
56
"encoding/json"
67
"io"
78
"log"
@@ -226,7 +227,7 @@ func handleMessages(
226227
log.Println("Authentication failed - no token attached")
227228
client.conn.WriteMessage(
228229
websocket.TextMessage,
229-
[]byte("Authentication failed - no JWT token"),
230+
[]byte("Authentication failed"),
230231
)
231232
client.conn.Close()
232233
break
@@ -248,12 +249,16 @@ func handleMessages(
248249
if !isSuccess {
249250
client.conn.WriteMessage(
250251
websocket.TextMessage,
251-
[]byte("Authentication failed - failed to find a matching room"),
252+
[]byte("Authentication failed"),
252253
)
253254
client.conn.Close()
254255
break
255256
}
256257
client.authenticated = true
258+
client.conn.WriteMessage(
259+
websocket.TextMessage,
260+
[]byte("Auth Success"),
261+
)
257262
log.Println("Client authenticated successfully")
258263
}
259264

@@ -262,6 +267,20 @@ func handleMessages(
262267
RoomID: client.roomID,
263268
Content: []byte("The session has been closed by a user."),
264269
}
270+
targetId := msgData["userId"].(string)
271+
data, err := persistMappings.Conn.HGetAll(context.Background(), targetId).Result()
272+
if err != nil {
273+
log.Printf("Error retrieving data for userID %s: %v", targetId, err)
274+
} else {
275+
_, err1 := persistMappings.Conn.Del(context.Background(), targetId).Result()
276+
if err1 != nil {
277+
log.Printf("Error deleting data for userID %s: %v", targetId, err1);
278+
}
279+
_, err2 := persistMappings.Conn.Del(context.Background(), data["otherUser"]).Result()
280+
if err2 != nil {
281+
log.Printf("Error deleting data for other user %s: %v", data["otherUser"], err2);
282+
}
283+
}
265284
hub.broadcast <- closeMessage
266285
}
267286

collab/verify/roomMappings.go

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,9 @@ func VerifyRoomAndMoveToPersist(
4444

4545
roomMappings.Conn.Del(ctx, matchHash);
4646
persistentRoom := map[string]interface{}{
47-
"roomId": roomID,
48-
"otherUser": data["otherUser"],
49-
"requestTime": data["requestTime"],
50-
51-
"title": data["title"],
52-
"titleSlug": data["titleSlug"],
53-
"difficulty": data["difficulty"],
54-
"topicTags": data["topicTags"],
55-
"content": data["content"],
56-
"schemas": data["schemas"],
57-
"id": data["id"],
47+
"roomId": roomID,
48+
"otherUser": data["otherUser"],
49+
"requestTime": data["requestTime"],
5850
}
5951

6052
// this always overrides the persistent room

peerprep/components/questionpage/CollabEditor.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ export default function CollabEditor({
7373
const [value, setValue] = useState(questionSeed);
7474
const [socket, setSocket] = useState<WebSocket | null>(null);
7575
const [connected, setConnected] = useState(false);
76+
const [authenticated, setAuthenticated] = useState(false);
7677
const router = useRouter();
7778

7879
const generatePatch = (oldContent: string, newContent: string): string => {
@@ -155,18 +156,17 @@ export default function CollabEditor({
155156
};
156157

157158
newSocket.onmessage = (event) => {
158-
if (event.data == "Authentication failed") {
159+
if (event.data == "Auth Success") {
160+
setAuthenticated(true);
161+
} else if (event.data == "Authentication failed") {
159162
window.alert("Authentication failed");
160-
if (socket) {
161-
socket.close();
162-
}
163+
newSocket.close();
163164
router.push("/questions");
164165
} else if (event.data == "The session has been closed by a user.") {
165-
window.alert("Session has ended");
166-
if (socket) {
167-
socket.close();
168-
}
169-
router.push("/questions");
166+
window.alert("Session has ended. If you leave the room now, this data will be lost.");
167+
newSocket.close();
168+
setAuthenticated(false);
169+
setConnected(false);
170170
} else {
171171
const message: Message = JSON.parse(event.data);
172172

@@ -221,7 +221,7 @@ export default function CollabEditor({
221221

222222
return (
223223
<>
224-
{connected && (
224+
{authenticated && (
225225
<CommsPanel className="flex flex-row justify-around" roomId={roomID} />
226226
)}
227227
<div className="m-4 flex items-center space-x-4 p-4">

0 commit comments

Comments
 (0)