/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable react-hooks/exhaustive-deps */ import { differenceInMilliseconds, isAfter, parseISO } from "date-fns"; import ky from "ky"; import { useEffect, useState } from "react"; import Countdown from "react-countdown"; import { useLocation, useNavigate, useParams } from "react-router-dom"; function ScheduledPage() { const params = useParams(); const { search } = useLocation(); const navigate = useNavigate(); const [countdownSeconds, setCountdownSeconds] = useState(); const [showWait, setShowWait] = useState(); async function connect() { try { const result: any = await ky .get( `${import.meta.env.VITE_CRM_API_URL}/scheduledSessions/${ params.sessionId }` ) .json(); if (isAfter(parseISO(result.startAt), new Date())) { const diffMs = differenceInMilliseconds( parseISO(result.startAt), new Date() ); setCountdownSeconds(diffMs); return; } if (!result.activeSessionId) { setShowWait(true); setTimeout(() => { connect(); }, 1000); return; } navigate(`/stream/${result.activeSessionId}${search}`); } catch (error) { if (error instanceof Error) { console.log(error.message); } } } useEffect(() => { connect(); }, []); return (
{countdownSeconds && (

Сеанс начнется через:

window.location.reload()} />

)} {showWait && (

Пожалуйста, подождите...

)}
); } export default ScheduledPage;