diff --git a/backend/voting/consumers.py b/backend/voting/consumers.py index 2f0a38f..4ec521e 100644 --- a/backend/voting/consumers.py +++ b/backend/voting/consumers.py @@ -73,8 +73,10 @@ class SessionConsumer(WebsocketConsumer): async_to_sync(self.channel_layer.group_send)( self.session_name, {"type": "voted", "user": { "id": user.id, "username": user.username}, "track": track.id, "points": points} ) - if action == "pause": - pass + if action == "start": + async_to_sync(self.channel_layer.group_send)( + self.session_name, {"type": "announce.start"} + ) if action == "next": random.seed(session.seed) tracks = Track.objects.order_by("?") @@ -107,10 +109,13 @@ class SessionConsumer(WebsocketConsumer): user = event["user"] self.send(text_data=json.dumps({"joined": user})) + # TODO: maybe this could be one function. def announce_track(self, event): self.send(text_data=json.dumps({"track": {}})) def announce_done(self, event): self.send(text_data=json.dumps({"done": {}})) + def announce_start(self, event): + self.send(text_data=json.dumps({"start": {}})) def voted(self, event): user = event["user"] diff --git a/frontend/src/app/lobby/page.tsx b/frontend/src/app/lobby/page.tsx index d8ec983..7ad5b8d 100644 --- a/frontend/src/app/lobby/page.tsx +++ b/frontend/src/app/lobby/page.tsx @@ -87,6 +87,12 @@ export default function Lobby() { setSessionState("voting"); setState("loading"); getTrack(); + sessionSocket.send( + JSON.stringify({ + action: "start", + token: user.access_token, + }), + ); } function addUser(user: object) { diff --git a/frontend/src/app/mobile-voting/page.tsx b/frontend/src/app/mobile-voting/page.tsx index dc0aba4..00e8056 100644 --- a/frontend/src/app/mobile-voting/page.tsx +++ b/frontend/src/app/mobile-voting/page.tsx @@ -43,10 +43,19 @@ export default function MobileVoting() { console.log(sessionSocket?.readyState); await waitForOpenSocket(); console.log("socket is open"); + sessionSocket.onclose = function (e) { + console.log("Chat socket closed unexpectedly"); + setYesHighlight(false); + setNoHighlight(false); + setVote(0.5); + setSessionId(null); + setTimeout(() => { + setSession(); + }, 2000); + }; sessionSocket.send( JSON.stringify({ action: "login", - userr: user.profile.nickname, token: user.access_token, }), ); @@ -57,14 +66,13 @@ export default function MobileVoting() { console.log(e); let data = JSON.parse(e.data); for (let key in data) { - if (key == "track") { + if (key == "track" || key == "start") { setYesHighlight(false); setNoHighlight(false); setVote(0.5); } } console.log(data); - //}, 1000); } // Initialize WebSocket connection when sessionId changes @@ -76,7 +84,6 @@ export default function MobileVoting() { ); socket.onmessage = onMessage; setSessionSocket(socket); - //setTimeout(() => connect(), 2000); } }, [sessionId]); @@ -113,7 +120,7 @@ export default function MobileVoting() { }, [vote]); return ( -
+