diff --git a/dailyjs/basic-call/components/App/App.js b/dailyjs/basic-call/components/App/App.js index 045c303..fdc6849 100644 --- a/dailyjs/basic-call/components/App/App.js +++ b/dailyjs/basic-call/components/App/App.js @@ -1,77 +1,23 @@ -import React, { useCallback, useEffect, useMemo } from 'react'; -import Loader from '@dailyjs/shared/components/Loader'; +import React, { useMemo } from 'react'; import { useCallState } from '@dailyjs/shared/contexts/CallProvider'; -import { - CALL_STATE_ENDED, - CALL_STATE_JOINED, - CALL_STATE_JOINING, - CALL_STATE_LOBBY, - CALL_STATE_NOT_FOUND, - CALL_STATE_NOT_BEFORE, - CALL_STATE_READY, - CALL_STATE_REDIRECTING, -} from '@dailyjs/shared/contexts/useCallMachine'; +import { useCallUI } from '@dailyjs/shared/hooks/useCallUI'; -import { useRouter } from 'next/router'; -import HairCheck from '../HairCheck'; -import MessageCard from '../MessageCard'; import Room from '../Room'; import { Modals } from './Modals'; export const App = () => { const { state, leave } = useCallState(); - const router = useRouter(); - useEffect(() => { - console.log(`%c🔀 App state changed: ${state}`, `color: gray;`); - }, [state]); - - const renderState = useCallback(() => { - // Show loader when state is undefined or ready to join - if (!state || [CALL_STATE_READY, CALL_STATE_JOINING].includes(state)) { - return ; - } - - // Update the UI based on the state of our call - switch (state) { - case CALL_STATE_NOT_FOUND: - router.replace('/not-found'); - return null; - case CALL_STATE_NOT_BEFORE: - return ( - - This room has `nbf` set, meaning you cannot join the call before the - owner - - ); - case CALL_STATE_LOBBY: - return ; - case CALL_STATE_JOINED: - return leave()} />; - case CALL_STATE_REDIRECTING: - case CALL_STATE_ENDED: - // Note: you could set a manual redirect here but we'll show just an exit screen - return ( - window.location.reload()}> - You have left the call. We hope you had fun! - - ); - default: - break; - } - - return ( - - An unknown error has occured in the call loop. This should not happen! - - ); - }, [leave, router, state]); + const componentForState = useCallUI({ + state, + room: () => leave()} />, + }); // Memoize children to avoid unnecassary renders from HOC return useMemo( () => (
- {renderState()} + {componentForState()}
), - [renderState] + [componentForState] ); }; diff --git a/dailyjs/basic-call/components/Audio/Audio.js b/dailyjs/basic-call/components/Audio/Audio.js index 788737d..3e5b7f1 100644 --- a/dailyjs/basic-call/components/Audio/Audio.js +++ b/dailyjs/basic-call/components/Audio/Audio.js @@ -10,15 +10,15 @@ const AudioItem = React.memo(({ participant }) => { useEffect(() => { if (!audioTrack || !audioRef.current) return; - // sanity check to make sure this is an audio track - if (audioTrack && audioTrack !== 'audio') return; + // quick sanity to check to make sure this is an audio track... + if (audioTrack.kind !== 'audio') return; audioRef.current.srcObject = new MediaStream([audioTrack]); }, [audioTrack]); return ( <> -