export function useToggleLocalMute()

in src/hooks/sdk/useToggleLocalMute.tsx [8:38]


export function useToggleLocalMute() {
  const audioVideo = useAudioVideo();
  const [muted, setMuted] = useState<boolean>(
    () => audioVideo?.realtimeIsLocalAudioMuted() || false
  );

  useEffect(() => {
    const muteUnmutecallback = (localMuted: boolean): void => {
      setMuted(localMuted);
    };

    audioVideo?.realtimeSubscribeToMuteAndUnmuteLocalAudio(muteUnmutecallback);
    setMuted(audioVideo?.realtimeIsLocalAudioMuted() || false);

    return (): void => {
      audioVideo?.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(
        muteUnmutecallback
      );
    };
  }, [audioVideo]);

  const toggleMute = useCallback(() => {
    if (muted) {
      audioVideo?.realtimeUnmuteLocalAudio();
    } else {
      audioVideo?.realtimeMuteLocalAudio();
    }
  }, [muted, audioVideo]);

  return { muted, toggleMute };
}