import React, { useState, useEffect } from "react"; import Navbar from "../components/Layout/Navbar"; import Button, { ToggleButton } from "../components/Layout/Button"; import ChatPanel from "../components/Video/ChatPanel"; import { useNavigate, useParams } from "react-router-dom"; import { useAuth } from "../context/AuthContext"; import VideoPlayer from "../components/Video/VideoPlayer"; import { SocketProvider } from "../context/SocketContext"; interface VideoPageProps { streamId: number; } interface StreamDataProps { streamId: number; streamTitle: string; streamerName: string; streamerId: number; startTime: string; viewerCount: number; categoryName: string; } const VideoPage: React.FC = ({ streamId }) => { const { isLoggedIn } = useAuth(); const { streamerName } = useParams<{ streamerName: string }>(); const [streamData, setStreamData] = useState(); const [isChatOpen, setIsChatOpen] = useState(true); // const [showCheckout, setShowCheckout] = useState(false); // const showReturn = window.location.search.includes("session_id"); const navigate = useNavigate(); // useEffect(() => { // // Prevent scrolling when checkout is open // if (showCheckout) { // document.body.style.overflow = "hidden"; // } else { // document.body.style.overflow = "unset"; // } // // Cleanup function to ensure overflow is restored when component unmounts // return () => { // document.body.style.overflow = "unset"; // }; // }, [showCheckout]); useEffect(() => { // Fetch stream data for this streamer fetch( `/api/get_stream_data/${streamerName}${ streamId == 0 ? "" : `/${streamId}` }` ).then((res) => { if (!res.ok) { console.error("Failed to load stream data:", res.statusText); } res .json() .then((data) => { // Transform snake_case to camelCase const transformedData: StreamDataProps = { streamId: streamId, streamerName: data.username, streamerId: data.user_id, streamTitle: data.title, startTime: data.start_time, viewerCount: data.num_viewers, categoryName: data.category_name, }; setStreamData(transformedData); }) .catch((error) => { console.error("Error fetching stream data:", error); }); }); }, [streamId, streamerName]); const toggleChat = () => { setIsChatOpen((prev) => !prev); }; return (
{isChatOpen ? "Hide Chat" : "Show Chat"}

{streamData ? streamData.streamTitle : "Loading..."}

navigate(`/user/${streamerName}`)} > streamer {streamData ? streamData.streamerName : "Loading..."}
Viewer Count: {streamData ? streamData.viewerCount : "0"}
Started At: {streamData ? new Date(streamData.startTime).toLocaleString() : "Loading..."}
Category ID: {streamData ? streamData.categoryName : "Loading..."}
{isLoggedIn && ( )}
{/* {showCheckout && setShowCheckout(false)} />} */} {/* {showReturn && } */}
); }; export default VideoPage;