import React, { useState, useEffect, useMemo } from 'react'; import { useCallState } from '@dailyjs/shared/contexts/CallProvider'; import { useCallUI } from '@dailyjs/shared/hooks/useCallUI'; import Room from '../Room'; import { Asides } from './Asides'; import { Modals } from './Modals'; export const App = () => { const { roomExp, state } = useCallState(); const [secs, setSecs] = useState(); // If room has an expiry time, we'll calculate how many seconds until expiry useEffect(() => { if (!roomExp) { return false; } const i = setInterval(() => { const timeLeft = Math.round((roomExp - Date.now()) / 1000); setSecs(`${Math.floor(timeLeft / 60)}:${`0${timeLeft % 60}`.slice(-2)}`); }, 1000); return () => clearInterval(i); }, [roomExp]); const componentForState = useCallUI({ state, room: () => , }); // Memoize children to avoid unnecassary renders from HOC const memoizedApp = useMemo( () => (
{componentForState()}
), [componentForState] ); return ( <> {roomExp &&
{secs}
} {memoizedApp} ); }; export default App;