From b027b57b2a4f5dd38a137229b9a21b8b4a1d5c88 Mon Sep 17 00:00:00 2001 From: Chris-1010 <122332721@umail.ucc.ie> Date: Sun, 9 Mar 2025 22:12:30 +0000 Subject: [PATCH] FIX: Categories' viewers for recommendations on `HomePage`; FIX: New messages sent into chat by streamer are correctly highlighted; REFACTOR: Remove console log & comment; --- frontend/package.json | 2 +- frontend/src/components/Layout/ListRow.tsx | 1 - frontend/src/components/Stream/ChatPanel.tsx | 3 ++- web_server/blueprints/chat.py | 7 ++++--- web_server/utils/recommendation_utils.py | 4 +++- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 5952062..cd82c93 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "frontend", "private": true, - "version": "0.15.0", + "version": "1.0.0", "type": "module", "scripts": { "dev": "vite --config vite.config.dev.ts", diff --git a/frontend/src/components/Layout/ListRow.tsx b/frontend/src/components/Layout/ListRow.tsx index 9bb3111..69f244f 100644 --- a/frontend/src/components/Layout/ListRow.tsx +++ b/frontend/src/components/Layout/ListRow.tsx @@ -169,7 +169,6 @@ const ListRow = forwardRef((props, ref) => { /> ); } else if (type === "vod" && isVodType(item)) { - console.log(item); return ( = ({ streamId, onViewerCountChange }) } socket.emit("send_message", { + user_id: userId, username: username, stream_id: streamId, message: inputMessage.trim(), @@ -193,7 +194,7 @@ const ChatPanel: React.FC = ({ streamId, onViewerCountChange })
{/* User avatar with image */} diff --git a/web_server/blueprints/chat.py b/web_server/blueprints/chat.py index e1eeb42..426a8c5 100644 --- a/web_server/blueprints/chat.py +++ b/web_server/blueprints/chat.py @@ -96,7 +96,6 @@ def get_past_chat(stream_id: int): ) subquery ORDER BY time_sent ASC; """, (stream_id, stream_id)) - #! ASC - Oldest to Newest db.close_connection() @@ -119,6 +118,7 @@ def send_chat(data) -> None: """ # Take the message information from frontend + chatter_id = data.get("user_id") chatter_name = data.get("username") stream_id = data.get("stream_id") message = data.get("message") @@ -127,9 +127,10 @@ def send_chat(data) -> None: if not all([chatter_name, message, stream_id]): emit("error", {"error": f"Unable to send a chat. The following info was given: chatter_name={chatter_name}, message={message}, stream_id={stream_id}"}, broadcast=False) return - subscribed = is_subscribed(get_user_id(chatter_name), stream_id) + subscribed = is_subscribed(chatter_id, stream_id) # Send the chat message to the client so it can be displayed emit("new_message", { + "chatter_id": chatter_id, "chatter_username": chatter_name, "message": message, "time_sent": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), @@ -137,7 +138,7 @@ def send_chat(data) -> None: }, room=stream_id) # Asynchronously save the chat - save_chat(get_user_id(chatter_name), stream_id, message) + save_chat(chatter_id, stream_id, message) def save_chat(chatter_id, stream_id, message): diff --git a/web_server/utils/recommendation_utils.py b/web_server/utils/recommendation_utils.py index e8418fa..4cebff0 100644 --- a/web_server/utils/recommendation_utils.py +++ b/web_server/utils/recommendation_utils.py @@ -100,10 +100,12 @@ def get_user_category_recommendations(user_id = 1, no_categories: int = 4) -> Op """ with Database() as db: categories = db.fetchall(""" - SELECT categories.category_id, categories.category_name, categories.num_viewers + SELECT categories.category_id, categories.category_name, COALESCE(SUM(streams.num_viewers), 0) AS num_viewers FROM categories JOIN user_preferences ON categories.category_id = user_preferences.category_id + LEFT JOIN streams ON categories.category_id = streams.category_id WHERE user_preferences.user_id = ? + GROUP BY categories.category_id, categories.category_name ORDER BY user_preferences.favourability DESC LIMIT ? """, (user_id, no_categories))