"use client"; import { useCallback, useEffect, useState, use } from "react"; import { Box, Spinner } from "@chakra-ui/react"; import useRoomMeeting from "./useRoomMeeting"; import { useRouter } from "next/navigation"; import { notFound } from "next/navigation"; import { useAuth } from "../lib/AuthProvider"; import VideoPlatformEmbed from "../lib/videoPlatforms/VideoPlatformEmbed"; export type RoomDetails = { params: Promise<{ roomName: string; }>; }; export default function Room(details: RoomDetails) { const [platformReady, setPlatformReady] = useState(false); const params = use(details.params); const roomName = params.roomName; const meeting = useRoomMeeting(roomName); const router = useRouter(); const status = useAuth().status; const isAuthenticated = status === "authenticated"; const isLoading = status === "loading" || meeting.loading; const handleLeave = useCallback(() => { router.push("/browse"); }, [router]); const handlePlatformReady = useCallback(() => { setPlatformReady(true); }, []); useEffect(() => { if ( !isLoading && meeting?.error && "status" in meeting.error && meeting.error.status === 404 ) { notFound(); } }, [isLoading, meeting?.error]); if (isLoading) { return ( ); } if (!meeting?.response || !isAuthenticated) { return null; } return ( ); }