"use client"; import React, { useEffect, useState } from "react"; import Recorder from "../recorder"; import { Dashboard } from "../dashboard"; import useWebRTC from "../useWebRTC"; import useTranscript from "../useTranscript"; import { useWebSockets } from "../useWebSockets"; import useAudioDevice from "../useAudioDevice"; import "../../styles/button.css"; import { Topic } from "../webSocketTypes"; import getApi from "../../lib/getApi"; import AudioInputsDropdown from "../audioInputsDropdown"; const TranscriptCreate = () => { const [stream, setStream] = useState(null); const [disconnected, setDisconnected] = useState(false); const useActiveTopic = useState(null); useEffect(() => { if (process.env.NEXT_PUBLIC_ENV === "development") { document.onkeyup = (e) => { if (e.key === "d") { setDisconnected((prev) => !prev); } }; } }, []); const api = getApi(); const transcript = useTranscript(stream, api); const webRTC = useWebRTC(stream, transcript?.response?.id, api); const webSockets = useWebSockets(transcript?.response?.id); const { loading, permissionOk, permissionDenied, audioDevices, requestPermission, getAudioStream, } = useAudioDevice(); const getCurrentStream = async () => { return audioDevices.length ? await getAudioStream(audioDevices[0].value) : null; }; return (
{permissionOk ? ( <> { webRTC?.peer?.send(JSON.stringify({ cmd: "STOP" })); setStream(null); }} topics={webSockets.topics} getAudioStream={getCurrentStream} useActiveTopic={useActiveTopic} isPastMeeting={false} /> ) : ( <>

Audio Permissions

{loading ? (

Checking permission...

) : ( <>

Reflector needs access to your microphone to work.
{permissionDenied ? "Please reset microphone permissions to continue." : "Please grant permission to continue."}

)}
)}
); }; export default TranscriptCreate;