"use client"; import React, { useEffect, useState } from "react"; import useAudioDevice from "../useAudioDevice"; import "react-select-search/style.css"; import "../../../styles/button.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 { useSession } from "next-auth/react"; import { featureEnabled } from "../../../domainContext"; import { signIn } from "next-auth/react"; import { Flex, Box, Spinner, Heading, Button, Card, Center, Link, CardBody, Stack, Text, Icon, Grid, IconButton, Spacer, Menu, MenuButton, MenuItem, MenuList, AlertDialog, AlertDialogOverlay, AlertDialogContent, AlertDialogHeader, AlertDialogBody, AlertDialogFooter, Tooltip, Input, } from "@chakra-ui/react"; const TranscriptCreate = () => { const router = useRouter(); const { status } = useSession(); const sessionReady = status !== "loading"; const isAuthenticated = status === "authenticated"; 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; return targetLanguage; }; const send = () => { if (loadingRecord || createTranscript.loading || permissionDenied) return; setLoadingRecord(true); createTranscript.create({ name, target_language: getTargetLanguage() }); }; const uploadFile = () => { if (loadingUpload || createTranscript.loading || permissionDenied) return; setLoadingUpload(true); createTranscript.create({ name, target_language: getTargetLanguage() }); }; 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") && }
{!sessionReady ? ( ) : requireLogin && !isAuthenticated ? ( ) : ( Try Reflector Recording name
Do you want to enable live translation? {loading ? ( Checking permissions... ) : permissionOk ? ( ) : permissionDenied ? ( Permission to use your microphone was denied, please change the permission setting in your browser and refresh this page. ) : ( )} OR
)}
); }; export default TranscriptCreate;