From d0aa591116211f9a283e60bc0bf95c32bcc158bc Mon Sep 17 00:00:00 2001 From: Chris-1010 <122332721@umail.ucc.ie> Date: Sun, 16 Feb 2025 23:57:57 +0000 Subject: [PATCH] FIX: Stream routing on ResultsPage; --- frontend/src/components/Input/SearchBar.tsx | 28 ++++++++------------- frontend/src/pages/ResultsPage.tsx | 4 +-- web_server/blueprints/search_bar.py | 6 +++-- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/frontend/src/components/Input/SearchBar.tsx b/frontend/src/components/Input/SearchBar.tsx index 989250a..e88df5f 100644 --- a/frontend/src/components/Input/SearchBar.tsx +++ b/frontend/src/components/Input/SearchBar.tsx @@ -9,16 +9,17 @@ const SearchBar: React.FC = () => { const navigate = useNavigate(); // Debounce the search query - {/* + { + /* useEffect(() => { const timer = setTimeout(() => { setDebouncedQuery(searchQuery); }, 500); // Wait 500ms after user stops typing return () => clearTimeout(timer); - }, [searchQuery]); */} + }, [searchQuery]); */ + } - // Perform search when debounced query changes const handleSearch = async () => { if (!searchQuery.trim()) return; @@ -28,13 +29,15 @@ const SearchBar: React.FC = () => { headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ query: searchQuery }), // <-- Fixed payload + body: JSON.stringify({ query: searchQuery }), }); const data = await response.json(); console.log("Search results:", data); - navigate("/results", { state: { searchResults: data, query: searchQuery } }); + navigate("/results", { + state: { searchResults: data, query: searchQuery }, + }); // Handle the search results here } catch (error) { @@ -44,24 +47,15 @@ const SearchBar: React.FC = () => { const handleKeyPress = (e: React.KeyboardEvent) => { if (e.key === "Enter") { - console.log("Key pressed:", e.key); // Debugging - - e.preventDefault(); // Prevent unintended form submission - handleSearch(); // Trigger search when Enter key is pressed + e.preventDefault(); + handleSearch(); } }; - const handleSearchChange = (e: React.ChangeEvent) => { setSearchQuery(e.target.value); }; - const handleKeyDown = (e: React.KeyboardEvent) => { - if (e.key === "Enter") { - handleSearch(); - } - }; - return ( ); diff --git a/frontend/src/pages/ResultsPage.tsx b/frontend/src/pages/ResultsPage.tsx index 06ec957..cbad4d7 100644 --- a/frontend/src/pages/ResultsPage.tsx +++ b/frontend/src/pages/ResultsPage.tsx @@ -63,9 +63,9 @@ const ResultsPage: React.FC = ({}) => {
  • navigate(`/${stream.streamer_name}`)} + onClick={() => navigate(`/${stream.username}`)} > - {stream.title} - {stream.num_viewers} viewers + {stream.title} - {stream.username} - {stream.num_viewers} viewers
  • ))} diff --git a/web_server/blueprints/search_bar.py b/web_server/blueprints/search_bar.py index 8cfb422..cf14190 100644 --- a/web_server/blueprints/search_bar.py +++ b/web_server/blueprints/search_bar.py @@ -41,9 +41,10 @@ def search_results(): # 3 streams streams = db.fetchall(""" - SELECT bm25(stream_fts) AS score, s.user_id, s.title, s.num_viewers, s.category_id + SELECT bm25(stream_fts) AS score, s.user_id, s.title, s.num_viewers, s.category_id, u.username FROM streams AS s INNER JOIN stream_fts AS f ON s.user_id = f.user_id + INNER JOIN users AS u ON s.user_id = u.user_id WHERE f.title LIKE '%' || ? || '%' ORDER BY score ASC LIMIT 3; @@ -123,9 +124,10 @@ def search_streams(): # Fetch the ranked data and send to JSON to be displayed streams = db.fetchall(""" - SELECT bm25(stream_fts) AS score, s.user_id, s.title, s.num_viewers, s.category_id + SELECT bm25(stream_fts) AS score, s.user_id, s.title, s.num_viewers, s.category_id, u.username FROM streams AS s INNER JOIN stream_fts AS f ON s.user_id = f.user_id + INNER JOIN users AS u ON s.user_id = u.user_id WHERE f.title LIKE '%' || ? || '%' ORDER BY score ASC; """, (query,))