in app/hooks/useFocusMode.tsx [13:36]
export default function useFocusMode() {
const chime: ChimeSdkWrapper | null = useContext(getChimeContext());
const [focusMode, setFocusMode] = useState(false);
const [state] = useContext(getUIStateContext());
useEffect(() => {
const callback = (message: DataMessage) => {
if (state.classMode === ClassMode.Teacher) {
return;
}
const { focus } = message.json();
chime?.audioVideo?.realtimeSetCanUnmuteLocalAudio(!focus);
if (focus) {
chime?.audioVideo?.realtimeMuteLocalAudio();
}
setFocusMode(!!focus);
};
const focusMessageUpdateCallback = { topic: MessageTopic.Focus, callback };
chime?.subscribeToMessageUpdate(focusMessageUpdateCallback);
return () => {
chime?.unsubscribeFromMessageUpdate(focusMessageUpdateCallback);
};
}, []);
return focusMode;
}