From 3857d8d767e90136d832f3d7c97e873d67f355ee Mon Sep 17 00:00:00 2001 From: Chris-1010 <122332721@umail.ucc.ie> Date: Sat, 1 Mar 2025 00:35:34 +0000 Subject: [PATCH] UPDATE/REFACTOR: Change how followed content is obtained for `Sidebar` --- .../src/components/Navigation/Sidebar.tsx | 35 ++---- frontend/src/pages/HomePage.tsx | 115 ++++++++---------- web_server/blueprints/user.py | 9 +- web_server/utils/user_utils.py | 32 +++++ 4 files changed, 98 insertions(+), 93 deletions(-) diff --git a/frontend/src/components/Navigation/Sidebar.tsx b/frontend/src/components/Navigation/Sidebar.tsx index 6cb5e8f..00be08f 100644 --- a/frontend/src/components/Navigation/Sidebar.tsx +++ b/frontend/src/components/Navigation/Sidebar.tsx @@ -28,22 +28,23 @@ const Sidebar: React.FC = ({ extraClasses = "" }) => { const [justToggled, setJustToggled] = useState(false); const sidebarId = useRef(Math.floor(Math.random() * 1000000)); - // Fetch followed streamers + // Fetch followed streamers & categories useEffect(() => { if (!isLoggedIn) return; - const fetchFollowedStreamers = async () => { + const fetchFollowData = async () => { try { const response = await fetch("/api/user/following"); - if (!response.ok) throw new Error("Failed to fetch followed streamers"); + if (!response.ok) throw new Error("Failed to fetch followed content"); const data = await response.json(); - setFollowedStreamers(data); + setFollowedStreamers(data.streams); + setFollowedCategories(data.categories); } catch (error) { - console.error("Error fetching followed streamers:", error); + console.error("Error fetching followed content:", error); } }; - fetchFollowedStreamers(); + fetchFollowData(); }, [isLoggedIn]); const handleSideBar = () => { @@ -70,24 +71,6 @@ const Sidebar: React.FC = ({ extraClasses = "" }) => { }; }, [showSideBar, setShowSideBar, isLoggedIn]); - useEffect(() => { - if (!isLoggedIn) return; - - const fetchFollowedCategories = async () => { - try { - const response = await fetch("/api/categories/following"); - if (!response.ok) - throw new Error("Failed to fetch followed categories"); - const data = await response.json(); - setFollowedCategories(data); - } catch (error) { - console.error("Error fetching followed categories:", error); - } - }; - - fetchFollowedCategories(); - }, [isLoggedIn]); - return ( <> = ({ extraClasses = "" }) => { Streamers
- {followedStreamers.map((streamer: any) => ( + {followedStreamers.map((streamer) => ( + - if (isLoadingStreams || isLoadingCategories || isLoadingVods) - return Loading Content...; - - return ( - - {/* Streams Section */} - navigate(`/${streamerName}`)} - extraClasses="bg-[var(--liveNow)]" - itemExtraClasses="w-[20vw]" - /> - - {/* Categories Section */} - navigate(`/category/${categoryName}`)} - titleClickable={true} - extraClasses="bg-[var(--recommend)]" - itemExtraClasses="w-[20vw]" - > - - - - {/* VODs Section */} - -