import React, { useState } from "react"; import { IconButton, Box, Text, Link } from "theme-ui"; import adapter from "webrtc-adapter"; import StartStreamModal from "../modals/StartStreamModal"; function StartStreamButton({ onStreamStart, onStreamEnd, stream }) { const [isStreamModalOpoen, setIsStreamModalOpen] = useState(false); function openModal() { setIsStreamModalOpen(true); } function closeModal() { setIsStreamModalOpen(false); setNoAudioTrack(false); } const unavailableMessage = ( Browser not supported for audio sharing.

See FAQ for more information.
); const noAudioMessage = ( No audio found in screen share.
Ensure "Share audio" is selected when sharing.

See FAQ for more information.
); const isSupported = adapter.browserDetails.browser === "chrome"; const [noAudioTrack, setNoAudioTrack] = useState(false); function handleStreamStart() { navigator.mediaDevices .getDisplayMedia({ video: true, audio: { noiseSuppression: false, autoGainControl: false, echoCancellation: false, }, }) .then((localStream) => { const tracks = localStream.getTracks(); const hasAudio = tracks.some((track) => track.kind === "audio"); setNoAudioTrack(!hasAudio); // Ensure an audio track is present if (hasAudio) { onStreamStart && onStreamStart(localStream); closeModal(); } else { // Stop the stream for (let track of tracks) { track.stop(); } } }) .catch(() => {}); } return ( <> ); } export default StartStreamButton;