export default function useAttendeeRealtimeAudio()

in src/hooks/useAttendeeRealtimeAudio.tsx [8:50]


export default function useAttendeeRealtimeAudio(attendeeId: string) {
  const [volume, setVolume] = useState<number>(0);
  const [muted, setMuted] = useState<boolean>(false);
  const [signalStrength, setSignalStrength] = useState<number>(0);
  const audioVideo = useAudioVideo();

  useEffect(() => {
    if (!audioVideo) {
      return;
    }

    const callback = (
      _: string,
      volume: number | null,
      muted: boolean | null,
      signalStrength: number | null
    ): void => {
      if (volume !== null) {
        setVolume(Math.round(volume * 100));
      }
      if (muted !== null) {
        setMuted(muted);
      }
      if (signalStrength !== null) {
        setSignalStrength(Math.round(signalStrength * 100));
      }
    };
    audioVideo.realtimeSubscribeToVolumeIndicator(
      attendeeId,
      callback
    );

    return () => {
      audioVideo.realtimeUnsubscribeFromVolumeIndicator(attendeeId);
    };
  }, [audioVideo, attendeeId]);

  return {
    volume,
    muted,
    signalStrength,
  };
}