import React, { useState } from 'react'; import { ConnectivityCheckResult, ConnectivityState, DiagnosticsRTCStats } from '@100mslive/react-sdk'; import { CheckCircleIcon, CrossCircleIcon, EyeCloseIcon, EyeOpenIcon, LinkIcon } from '@100mslive/react-icons'; import { TestContainer, TestFooter } from './components'; import { Button } from '../Button'; import { Box, Flex } from '../Layout'; import { Loading } from '../Loading'; import { formatBytes } from '../Stats'; import { Text } from '../Text'; import { DiagnosticsStep, useDiagnostics } from './DiagnosticsContext'; const Regions = { in: 'India', us: 'United States', }; const ConnectivityStateMessage = { [ConnectivityState.STARTING]: 'Fetching Init', [ConnectivityState.INIT_FETCHED]: 'Connecting to signal server', [ConnectivityState.SIGNAL_CONNECTED]: 'Establishing ICE connection', [ConnectivityState.ICE_ESTABLISHED]: 'Capturing Media', [ConnectivityState.MEDIA_CAPTURED]: 'Publishing Media', [ConnectivityState.MEDIA_PUBLISHED]: 'Finishing Up', [ConnectivityState.COMPLETED]: 'Completed', }; export const ConnectivityTestStepResult = ({ title, status = 'Connected', success, children, }: { title: string; status?: string; success?: boolean; children: React.ReactNode; }) => { const [hideDetails, setHideDetails] = useState(true); return ( {title} {success ? ( {status} ) : ( Failed )} setHideDetails(!hideDetails)} align="center" gap="2" css={{ color: '$primary_bright', }} > {hideDetails ? : } {hideDetails ? 'View' : 'Hide'} detailed information {!hideDetails ? {children} : null} ); }; const DetailedInfo = ({ title, value, Icon, }: { title: string; value: string; Icon?: (props: React.SVGProps) => React.JSX.Element; }) => { return ( {title} {Icon && ( )} {value} ); }; const MediaServerResult = ({ result }: { result?: ConnectivityCheckResult['mediaServerReport'] }) => { return ( {result?.connectionQualityScore ? ( ) : null} ); }; const SignallingResult = ({ result }: { result?: ConnectivityCheckResult['signallingReport'] }) => { return ( ); }; const AudioStats = ({ stats }: { stats: DiagnosticsRTCStats | undefined }) => { return ( {stats && ( )} ); }; const VideoStats = ({ stats }: { stats: DiagnosticsRTCStats | undefined }) => { return ( {stats && ( )} ); }; const Footer = ({ error, result, restart, }: { result?: ConnectivityCheckResult; restart: () => void; error?: Error; }) => { return ( ); }; const ConnectivityTestReport = ({ error, result, progress, startTest, }: { error?: Error; result?: ConnectivityCheckResult; progress?: ConnectivityState; startTest: () => void; }) => { if (error) { return ( <> Connectivity Test Failed {error.message}