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 (
<>
-