Memoized Haircheck.js waiting message

This commit is contained in:
Kimberlee Johnson 2022-01-04 15:38:49 -08:00
parent b1dc5868b2
commit 0fcb3ce455
1 changed files with 44 additions and 34 deletions

View File

@ -32,8 +32,13 @@ import { useDeepCompareMemo } from 'use-deep-compare';
export const HairCheck = () => { export const HairCheck = () => {
const { callObject, join } = useCallState(); const { callObject, join } = useCallState();
const { localParticipant } = useParticipants(); const { localParticipant } = useParticipants();
const { deviceState, camError, micError, isCamMuted, isMicMuted } = const {
useMediaDevices(); deviceState,
camError,
micError,
isCamMuted,
isMicMuted,
} = useMediaDevices();
const { openModal } = useUIState(); const { openModal } = useUIState();
const [waiting, setWaiting] = useState(false); const [waiting, setWaiting] = useState(false);
const [joining, setJoining] = useState(false); const [joining, setJoining] = useState(false);
@ -95,10 +100,9 @@ export const HairCheck = () => {
[localParticipant] [localParticipant]
); );
const isLoading = useMemo( const isLoading = useMemo(() => deviceState === DEVICE_STATE_LOADING, [
() => deviceState === DEVICE_STATE_LOADING, deviceState,
[deviceState] ]);
);
const hasError = useMemo(() => { const hasError = useMemo(() => {
if ( if (
@ -127,6 +131,39 @@ export const HairCheck = () => {
} }
}, [camError]); }, [camError]);
const showWaitingMessage = useMemo(() => {
return (
<div className="waiting">
<Loader />
{denied ? (
<span>Call owner denied request</span>
) : (
<span>Waiting for host to grant access</span>
)}
</div>
);
}, [denied]);
const showUsernameInput = useMemo(() => {
return (
<>
<TextInput
placeholder="Enter display name"
variant="dark"
disabled={joining}
value={userName}
onChange={(e) => setUserName(e.target.value)}
/>
<Button
disabled={joining || userName.length < 3}
onClick={() => joinCall(userName)}
>
Join call
</Button>
</>
);
}, [userName, joinCall, joining, setUserName]);
return ( return (
<> <>
<main className="haircheck"> <main className="haircheck">
@ -174,34 +211,7 @@ export const HairCheck = () => {
</div> </div>
{tileMemo} {tileMemo}
</div> </div>
<footer> <footer>{waiting ? showWaitingMessage : showUsernameInput}</footer>
{waiting ? (
<div className="waiting">
<Loader />
{denied ? (
<span>Call owner denied request</span>
) : (
<span>Waiting for host to grant access</span>
)}
</div>
) : (
<>
<TextInput
placeholder="Enter display name"
variant="dark"
disabled={joining}
value={userName}
onChange={(e) => setUserName(e.target.value)}
/>
<Button
disabled={joining || userName.length < 3}
onClick={() => joinCall(userName)}
>
Join call
</Button>
</>
)}
</footer>
</div> </div>
<style jsx>{` <style jsx>{`