/* Copyright 2023, 2024 New Vector Ltd. SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial Please see LICENSE in the repository root for full details. */ import { useState, type FC } from "react"; import { Button, Text } from "@vector-im/compound-web"; import { MicOnSolidIcon, VideoCallSolidIcon, } from "@vector-im/compound-design-tokens/assets/web/icons"; import classNames from "classnames"; import { Modal } from "./Modal"; import styles from "./RTCConnectionStats.module.css"; import mediaViewStyles from "../src/tile/MediaView.module.css"; interface Props { audio?: RTCInboundRtpStreamStats | RTCOutboundRtpStreamStats; video?: RTCInboundRtpStreamStats | RTCOutboundRtpStreamStats; focusUrl?: string; rtcBackendIdentity?: string; } const extractDomain = (url: string): string => { try { const parsedUrl = new URL(url); return parsedUrl.hostname; // Returns "kdk.cpm" } catch (error) { console.error("Invalid URL:", error); return url; } }; // This is only used in developer mode for debugging purposes, so we don't need full localization export const RTCConnectionStats: FC = ({ audio, video, focusUrl, rtcBackendIdentity, ...rest }) => { const [showModal, setShowModal] = useState(false); const [modalContents, setModalContents] = useState< "video" | "audio" | "none" >("none"); const showFullModal = (contents: "video" | "audio"): void => { setShowModal(true); setModalContents(contents); }; const onDismissModal = (): void => { setShowModal(false); setModalContents("none"); }; return (
            {modalContents !== "none" &&
              JSON.stringify(
                modalContents === "video" ? video : audio,
                null,
                2,
              )}
          
rtcBackendIdentity:{rtcBackendIdentity} {focusUrl && (
 {extractDomain(focusUrl)}
)} {audio && (
)} {video && (
)}
); };