"use client"; import React, { useEffect, useState } from "react"; import useAudioDevice from "../useAudioDevice"; import "react-select-search/style.css"; import "../../../styles/form.scss"; import About from "../../../(aboutAndPrivacy)/about"; import Privacy from "../../../(aboutAndPrivacy)/privacy"; import { useRouter } from "next/navigation"; import useCreateTranscript from "../createTranscript"; import SelectSearch from "react-select-search"; import { supportedLanguages } from "../../../supportedLanguages"; import { featureEnabled } from "../../../domainContext"; import { Flex, Box, Spinner, Heading, Button, Center, Text, Spacer, } from "@chakra-ui/react"; import { useAuth } from "../../../lib/AuthProvider"; const TranscriptCreate = () => { const isClient = typeof window !== "undefined"; const router = useRouter(); const auth = useAuth(); const isAuthenticated = auth.status === "authenticated"; const isAuthRefreshing = auth.status === "refreshing"; const isLoading = auth.status === "loading"; const requireLogin = featureEnabled("requireLogin"); const [name, setName] = useState(""); const nameChange = (event: React.ChangeEvent) => { setName(event.target.value); }; const [targetLanguage, setTargetLanguage] = useState("NOTRANSLATION"); const onLanguageChange = (newval) => { (!newval || typeof newval === "string") && setTargetLanguage(newval); }; const createTranscript = useCreateTranscript(); const [loadingRecord, setLoadingRecord] = useState(false); const [loadingUpload, setLoadingUpload] = useState(false); const getTargetLanguage = () => { if (targetLanguage === "NOTRANSLATION") return undefined; return targetLanguage; }; const send = () => { if (loadingRecord || createTranscript.loading || permissionDenied) return; setLoadingRecord(true); const targetLang = getTargetLanguage(); createTranscript.create({ name, source_language: "en", target_language: targetLang || "en", }); }; const uploadFile = () => { if (loadingUpload || createTranscript.loading || permissionDenied) return; setLoadingUpload(true); const targetLang = getTargetLanguage(); createTranscript.create({ name, source_language: "en", target_language: targetLang || "en", }); }; useEffect(() => { let action = "record"; if (loadingUpload) action = "upload"; createTranscript.transcript && router.push(`/transcripts/${createTranscript.transcript.id}/${action}`); }, [createTranscript.transcript]); useEffect(() => { if (createTranscript.error) setLoadingRecord(false); }, [createTranscript.error]); const { loading, permissionOk, permissionDenied, requestPermission } = useAudioDevice(); return ( Welcome to Reflector Reflector is a transcription and summarization pipeline that transforms audio into knowledge. The output is meeting minutes and topic summaries enabling topic-specific analyses stored in your systems of record. This is accomplished on your infrastructure – without 3rd parties – keeping your data private, secure, and organized. In order to use Reflector, we kindly request permission to access your microphone during meetings and events. {featureEnabled("privacy") && }
{isLoading ? ( ) : requireLogin && !isAuthenticated && !isAuthRefreshing ? ( ) : ( Try Reflector Recording name
Do you want to enable live translation? {}} onFocus={() => {}} placeholder="Choose your language" /> {isClient && !loading ? ( permissionOk ? ( ) : permissionDenied ? ( Permission to use your microphone was denied, please change the permission setting in your browser and refresh this page. ) : ( ) ) : ( Checking permissions... )} OR
)}
); }; export default TranscriptCreate;