export function useBandwidthMetrics()

in src/hooks/sdk/useBandwidthMetrics.tsx [18:69]


export function useBandwidthMetrics() {
  console.log(
    'This hook is deprecated and will be removed in future version, please use useMediaStreamMetrics hook instead.'
  );
  const audioVideo = useAudioVideo();
  const [metrics, setMetrics] = useState<BandwidthMetrics>({
    availableOutgoingBandwidth: null,
    availableIncomingBandwidth: null,
  });

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

    const observer = {
      metricsDidReceive(clientMetricReport: ClientMetricReport): void {
        const metricReport = clientMetricReport.getObservableMetrics();

        let availableOutgoingBandwidth = null;
        let availableIncomingBandwidth = null;

        if (isValidMetric(metricReport.availableSendBandwidth)) {
          availableOutgoingBandwidth =
            metricReport.availableSendBandwidth / 1000;
        } else if (isValidMetric(metricReport.availableOutgoingBitrate)) {
          availableOutgoingBandwidth =
            metricReport.availableOutgoingBitrate / 1000;
        }

        if (isValidMetric(metricReport.availableReceiveBandwidth)) {
          availableIncomingBandwidth =
            metricReport.availableReceiveBandwidth / 1000;
        } else if (isValidMetric(metricReport.availableIncomingBitrate)) {
          availableIncomingBandwidth =
            metricReport.availableIncomingBitrate / 1000;
        }

        setMetrics({
          availableOutgoingBandwidth,
          availableIncomingBandwidth,
        });
      },
    };

    audioVideo.addObserver(observer);

    return () => audioVideo.removeObserver(observer);
  }, [audioVideo]);

  return metrics;
}