import React, { useState, useEffect } from "react"; import "../../assets/styles/sidebar.css"; import { useSidebar } from "../../context/SidebarContext"; import { useNavigate } from "react-router-dom"; import { useAuth } from "../../context/AuthContext"; interface Streamer { user_id: number; username: string; } interface Category { category_id: number; category_name: string; } interface SideBarProps { extraClasses?: string; } const Sidebar: React.FC = ({ extraClasses }) => { const { showSideBar } = useSidebar(); const navigate = useNavigate(); const { username, isLoggedIn } = useAuth(); const [followedStreamers, setFollowedStreamers] = useState([]); const [followedCategories, setFollowedCategories] = useState([]); // Fetch followed streamers useEffect(() => { if (!isLoggedIn) return; const fetchFollowedStreamers = async () => { try { const response = await fetch("/api/user/following"); if (!response.ok) throw new Error("Failed to fetch followed streamers"); const data = await response.json(); setFollowedStreamers(data); } catch (error) { console.error("Error fetching followed streamers:", error); } }; fetchFollowedStreamers(); }, [isLoggedIn]); // Fetch followed categories 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 ( ); }; export default Sidebar;