From 76852152ad56a2d209f3cb11252f39c0b31613f4 Mon Sep 17 00:00:00 2001 From: white <122345776@umail.ucc.ie> Date: Wed, 5 Feb 2025 12:45:18 +0000 Subject: [PATCH] FEAT: sent live viewers to react to be displayed --- frontend/src/components/Video/ChatPanel.tsx | 5 +++++ web_server/blueprints/chat.py | 16 ++++++++++++++-- web_server/blueprints/email.py | 2 +- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/Video/ChatPanel.tsx b/frontend/src/components/Video/ChatPanel.tsx index 383e937..d070a04 100644 --- a/frontend/src/components/Video/ChatPanel.tsx +++ b/frontend/src/components/Video/ChatPanel.tsx @@ -61,6 +61,11 @@ const ChatPanel: React.FC = ({ streamId }) => { setMessages((prev) => [...prev, data]); }); + // Handle live viewership + socket.on("status", (data: ChatMessage) => { + console.log("Live viewership: ", data) // returns dictionary {message: message, num_viewers: num_viewers} + }) + // Cleanup function return () => { window.removeEventListener("beforeunload", handleBeforeUnload); diff --git a/web_server/blueprints/chat.py b/web_server/blueprints/chat.py index f23d698..a5a903f 100644 --- a/web_server/blueprints/chat.py +++ b/web_server/blueprints/chat.py @@ -25,7 +25,13 @@ def handle_join(data) -> None: stream_id = data.get("stream_id") if stream_id: join_room(stream_id) - emit("status", {"message": f"Welcome to the chat, stream_id: {stream_id}"}, room=stream_id) + num_viewers = len(list(socketio.server.manager.get_participants("/", stream_id))) + emit("status", + { + "message": f"Welcome to the chat, stream_id: {stream_id}", + "num_viewers": num_viewers + }, + room=stream_id) @socketio.on("leave") @@ -36,7 +42,13 @@ def handle_leave(data) -> None: stream_id = data.get("stream_id") if stream_id: leave_room(stream_id) - emit("status", {"message": f"user left room {stream_id}"}, room=stream_id) + num_viewers = len(list(socketio.server.manager.get_participants("/", stream_id))) + emit("status", + { + "message": f"Welcome to the chat, stream_id: {stream_id}", + "num_viewers": num_viewers + }, + room=stream_id) @chat_bp.route("/chat/") diff --git a/web_server/blueprints/email.py b/web_server/blueprints/email.py index 8ce9373..1632d4c 100644 --- a/web_server/blueprints/email.py +++ b/web_server/blueprints/email.py @@ -31,7 +31,7 @@ def send_email(username) -> None: - Thank you for choosing Gander +

Thank you for choosing Gander

Your Gander login code is: {login_code}