Skip to content

Commit 81b8d61

Browse files
committed
add close button
1 parent 371f27f commit 81b8d61

File tree

4 files changed

+97
-6
lines changed

4 files changed

+97
-6
lines changed

collab/main.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@ func handleMessages(client *Client, hub *Hub) {
140140
break
141141
}
142142

143+
log.Printf("Received")
144+
143145
var msgData map[string]interface{}
144146
if err := json.Unmarshal(message, &msgData); err != nil {
145147
log.Printf("Failed to parse message: %v", err)
@@ -165,6 +167,14 @@ func handleMessages(client *Client, hub *Hub) {
165167
continue
166168
}
167169

170+
if msgData["type"] == "close_session" {
171+
log.Println("It's time")
172+
closeMessage := Message{
173+
roomID: client.roomID,
174+
content: []byte("The session has been closed by a user."),
175+
}
176+
hub.broadcast <- closeMessage
177+
}
168178

169179
// Broadcast the message to other clients
170180
hub.broadcast <- Message{roomID: client.roomID, content: message}

matching-service-api/log/matching_service_api.log

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,26 @@ time="2024-10-27T16:35:54+08:00" level=info msg="request from user 6702c9a3f1217
6969
time="2024-10-27T16:35:56+08:00" level=info msg="request from user 67188e6ebe7127ec5d472f15 successfully published"
7070
time="2024-10-27T16:36:54+08:00" level=info msg="request from user 67188e6ebe7127ec5d472f15 successfully published"
7171
time="2024-10-27T16:36:55+08:00" level=info msg="request from user 6702c9a3f1217a1b2123575b successfully published"
72+
time="2024-10-28T13:01:44+08:00" level=info msg="Server started at time: 2024-10-28 13:01:44.2402807 +0800 +08 m=+0.155052801"
73+
time="2024-10-28T13:06:50+08:00" level=info msg="request from user 671f1bdf0b0e2619aaa4dd85 successfully published"
74+
time="2024-10-28T13:06:50+08:00" level=info msg="request from user 6702c9a3f1217a1b2123575b successfully published"
75+
time="2024-10-28T13:06:51+08:00" level=info msg="request from user 67188e6ebe7127ec5d472f15 successfully published"
76+
time="2024-10-28T13:06:52+08:00" level=info msg="request from user 671f1ba30b0e2619aaa4dd7a successfully published"
77+
time="2024-10-28T13:12:22+08:00" level=info msg="request from user 671f1bdf0b0e2619aaa4dd85 successfully published"
78+
time="2024-10-28T13:12:24+08:00" level=info msg="request from user 6702c9a3f1217a1b2123575b successfully published"
79+
time="2024-10-28T13:50:55+08:00" level=info msg="request from user 6702c9a3f1217a1b2123575b successfully published"
80+
time="2024-10-28T13:51:03+08:00" level=info msg="request from user 671f1bdf0b0e2619aaa4dd85 successfully published"
81+
time="2024-10-28T13:57:58+08:00" level=info msg="request from user 6702c9a3f1217a1b2123575b successfully published"
82+
time="2024-10-28T13:57:59+08:00" level=info msg="request from user 671f1bdf0b0e2619aaa4dd85 successfully published"
83+
time="2024-10-28T13:59:34+08:00" level=info msg="request from user 6702c9a3f1217a1b2123575b successfully published"
84+
time="2024-10-28T13:59:35+08:00" level=info msg="request from user 671f1bdf0b0e2619aaa4dd85 successfully published"
85+
time="2024-10-28T14:00:45+08:00" level=info msg="request from user 6702c9a3f1217a1b2123575b successfully published"
86+
time="2024-10-28T14:00:46+08:00" level=info msg="request from user 671f1bdf0b0e2619aaa4dd85 successfully published"
87+
time="2024-10-28T14:04:50+08:00" level=info msg="request from user 6702c9a3f1217a1b2123575b successfully published"
88+
time="2024-10-28T14:04:51+08:00" level=info msg="request from user 671f1bdf0b0e2619aaa4dd85 successfully published"
89+
time="2024-10-28T14:10:02+08:00" level=info msg="request from user 6702c9a3f1217a1b2123575b successfully published"
90+
time="2024-10-28T14:10:03+08:00" level=info msg="request from user 671f1bdf0b0e2619aaa4dd85 successfully published"
91+
time="2024-10-28T14:17:49+08:00" level=info msg="request from user 67188e6ebe7127ec5d472f15 successfully published"
92+
time="2024-10-28T14:17:49+08:00" level=info msg="request from user 6702c9a3f1217a1b2123575b successfully published"
93+
time="2024-10-28T14:17:50+08:00" level=info msg="request from user 671f1ba30b0e2619aaa4dd7a successfully published"
94+
time="2024-10-28T14:17:50+08:00" level=info msg="request from user 671f1bdf0b0e2619aaa4dd85 successfully published"

peerprep/components/questionpage/CollabEditor.tsx

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, { useState, useEffect } from "react";
2+
import { useRouter } from "next/navigation";
23
import AceEditor from "react-ace";
34

45
import "ace-builds/src-noconflict/mode-python";
@@ -12,6 +13,7 @@ import "ace-builds/src-min-noconflict/ext-language_tools";
1213
import PeerprepDropdown from "@/components/shared/PeerprepDropdown";
1314

1415
import { Question } from "@/api/structs";
16+
import PeerprepButton from "../shared/PeerprepButton";
1517

1618
const languages = [
1719
"javascript",
@@ -55,6 +57,7 @@ export default function CollabEditor({ question, roomID, authToken }: Props) {
5557
const [value, setValue] = useState("def foo:\n pass");
5658
const [socket, setSocket] = useState<WebSocket | null>(null);
5759
const [connected, setConnected] = useState(false);
60+
const router = useRouter();
5861

5962
const handleOnChange = (newValue: string) => {
6063
setValue(newValue);
@@ -88,13 +91,22 @@ export default function CollabEditor({ question, roomID, authToken }: Props) {
8891
newSocket.onmessage = (event) => {
8992
if (event.data == "Authentication failed") {
9093
console.log("Authentication failed");
94+
router.push("/questions");
9195
return;
92-
}
93-
94-
const message = JSON.parse(event.data);
96+
} else if (event.data == "The session has been closed by a user.") {
97+
window.alert("Session has ended");
98+
if (socket) {
99+
console.log("what");
100+
socket.close();
101+
}
102+
router.push("/questions");
103+
return;
104+
} else {
105+
const message = JSON.parse(event.data);
95106

96-
if (message.type === "content_change") {
97-
setValue(message.data);
107+
if (message.type === "content_change") {
108+
setValue(message.data);
109+
}
98110
}
99111
};
100112

@@ -104,7 +116,22 @@ export default function CollabEditor({ question, roomID, authToken }: Props) {
104116
};
105117

106118
setSocket(newSocket);
107-
}, []);
119+
120+
return () => {
121+
newSocket.close();
122+
};
123+
}, [roomID, authToken]);
124+
125+
const handleCloseConnection = () => {
126+
const confirmClose = confirm(
127+
"Are you sure you are finished? This will close the room for all users."
128+
);
129+
130+
if (confirmClose && socket) {
131+
console.log("Sent!");
132+
socket.send(JSON.stringify({ type: "close_session" }));
133+
}
134+
};
108135

109136
return (
110137
<>
@@ -138,6 +165,14 @@ export default function CollabEditor({ question, roomID, authToken }: Props) {
138165
"border border-gray-600 bg-gray-800 text-white p-2 rounded"
139166
}
140167
/>
168+
169+
{roomID && (
170+
<div className="h-full align-middle">
171+
<PeerprepButton onClick={handleCloseConnection}>
172+
Close Room
173+
</PeerprepButton>
174+
</div>
175+
)}
141176
</div>
142177
{roomID && (
143178
<div className="w-full text-center mb-[16px]">

storage-blob-api/log/matching_service_api.log

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,26 @@ time="2024-10-27T16:36:18+08:00" level=info msg="Request handled successfully"
8282
time="2024-10-27T16:36:23+08:00" level=info msg="Request handled successfully"
8383
time="2024-10-27T16:36:59+08:00" level=info msg="Request handled successfully"
8484
time="2024-10-27T16:37:01+08:00" level=info msg="Request handled successfully"
85+
time="2024-10-28T13:01:45+08:00" level=info msg="Server started running successfully"
86+
time="2024-10-28T13:06:54+08:00" level=info msg="Request handled successfully"
87+
time="2024-10-28T13:06:57+08:00" level=info msg="Request handled successfully"
88+
time="2024-10-28T13:06:57+08:00" level=info msg="Request handled successfully"
89+
time="2024-10-28T13:06:57+08:00" level=info msg="Request handled successfully"
90+
time="2024-10-28T13:12:27+08:00" level=info msg="Request handled successfully"
91+
time="2024-10-28T13:12:29+08:00" level=info msg="Request handled successfully"
92+
time="2024-10-28T13:51:05+08:00" level=info msg="Request handled successfully"
93+
time="2024-10-28T13:51:08+08:00" level=info msg="Request handled successfully"
94+
time="2024-10-28T13:58:04+08:00" level=info msg="Request handled successfully"
95+
time="2024-10-28T13:58:04+08:00" level=info msg="Request handled successfully"
96+
time="2024-10-28T13:59:39+08:00" level=info msg="Request handled successfully"
97+
time="2024-10-28T13:59:40+08:00" level=info msg="Request handled successfully"
98+
time="2024-10-28T14:00:51+08:00" level=info msg="Request handled successfully"
99+
time="2024-10-28T14:00:51+08:00" level=info msg="Request handled successfully"
100+
time="2024-10-28T14:04:55+08:00" level=info msg="Request handled successfully"
101+
time="2024-10-28T14:04:56+08:00" level=info msg="Request handled successfully"
102+
time="2024-10-28T14:10:08+08:00" level=info msg="Request handled successfully"
103+
time="2024-10-28T14:10:08+08:00" level=info msg="Request handled successfully"
104+
time="2024-10-28T14:17:53+08:00" level=info msg="Request handled successfully"
105+
time="2024-10-28T14:17:54+08:00" level=info msg="Request handled successfully"
106+
time="2024-10-28T14:17:55+08:00" level=info msg="Request handled successfully"
107+
time="2024-10-28T14:17:55+08:00" level=info msg="Request handled successfully"

0 commit comments

Comments
 (0)