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;