// Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 import React from 'react'; import { useMediaStreamMetrics, useAudioVideo, PopOverHeader, } from 'amazon-chime-sdk-component-library-react'; import MediaStatsList from '../../components/MediaStatsList/index'; import MetricItem from '../../components/MediaStatsList/MetricItem'; import { StyledMediaMetricsWrapper } from '../../components/MediaStatsList/Styled'; // eslint-disable-next-line @typescript-eslint/no-explicit-any function isValidMetric(metric: any) { return typeof metric === 'number' && !Number.isNaN(metric); } interface Props { /** The Chime attendee ID */ attendeeId: string; } export const VideoStreamMetrics: React.FC = ({ attendeeId }) => { const audioVideo = useAudioVideo(); const { videoStreamMetrics } = useMediaStreamMetrics(); const streamMetric = videoStreamMetrics[attendeeId]; const ssrcArray = streamMetric ? Object.keys(streamMetric) : []; const showMetric = audioVideo && attendeeId && streamMetric && ssrcArray.length !== 0; return ( {showMetric && ( <> { return isValidMetric(streamMetric[ssrc].videoDownstreamBitrate) ? Math.trunc( streamMetric[ssrc].videoDownstreamBitrate / 1000 ).toString() : ''; })} /> { return isValidMetric( streamMetric[ssrc].videoDownstreamPacketLossPercent ) ? Math.trunc( streamMetric[ssrc].videoDownstreamPacketLossPercent ).toString() : ''; })} /> { return isValidMetric( streamMetric[ssrc].videoDownstreamFramesDecodedPerSecond ) ? streamMetric[ ssrc ].videoDownstreamFramesDecodedPerSecond.toString() : ''; })} /> { return isValidMetric( streamMetric[ssrc].videoDownstreamFrameHeight ) ? streamMetric[ssrc].videoDownstreamFrameHeight.toString() : ''; })} /> { return isValidMetric( streamMetric[ssrc].videoDownstreamFrameWidth ) ? streamMetric[ssrc].videoDownstreamFrameWidth.toString() : ''; })} /> { return isValidMetric(streamMetric[ssrc].videoUpstreamBitrate) ? Math.trunc( streamMetric[ssrc].videoUpstreamBitrate / 1000 ).toString() : ''; })} /> { return isValidMetric( streamMetric[ssrc].videoUpstreamPacketsSent ) ? streamMetric[ssrc].videoUpstreamPacketsSent.toString() : ''; })} /> { return isValidMetric( streamMetric[ssrc].videoUpstreamFramesEncodedPerSecond ) ? streamMetric[ ssrc ].videoUpstreamFramesEncodedPerSecond.toString() : ''; })} /> { return isValidMetric( streamMetric[ssrc].videoUpstreamFrameHeight ) ? streamMetric[ssrc].videoUpstreamFrameHeight.toString() : ''; })} /> { return isValidMetric(streamMetric[ssrc].videoUpstreamFrameWidth) ? streamMetric[ssrc].videoUpstreamFrameWidth.toString() : ''; })} /> )} ); }; export default VideoStreamMetrics;