"use client"; import Modal from "../modal"; import useTranscript from "../useTranscript"; import useTopics from "../useTopics"; import useWaveform from "../useWaveform"; import useMp3 from "../useMp3"; import { TopicList } from "../topicList"; import { Topic } from "../webSocketTypes"; import React, { useEffect, useState } from "react"; import "../../../styles/button.css"; import FinalSummary from "../finalSummary"; import ShareLink from "../shareLink"; import QRCode from "react-qr-code"; import TranscriptTitle from "../transcriptTitle"; import ShareModal from "./shareModal"; import Player from "../player"; import WaveformLoading from "../waveformLoading"; import { useRouter } from "next/navigation"; import { faSpinner } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { featureEnabled } from "../../domainContext"; import { toShareMode } from "../../../lib/shareMode"; type TranscriptDetails = { params: { transcriptId: string; }; }; export default function TranscriptDetails(details: TranscriptDetails) { const transcriptId = details.params.transcriptId; const router = useRouter(); const transcript = useTranscript(transcriptId); const topics = useTopics(transcriptId); const waveform = useWaveform(transcriptId); const useActiveTopic = useState(null); const mp3 = useMp3(transcriptId); const [showModal, setShowModal] = useState(false); useEffect(() => { const statusToRedirect = ["idle", "recording", "processing"]; if (statusToRedirect.includes(transcript.response?.status)) { const newUrl = "/transcripts/" + details.params.transcriptId + "/record"; // Shallow redirection does not work on NextJS 13 // https://github.com/vercel/next.js/discussions/48110 // https://github.com/vercel/next.js/discussions/49540 router.push(newUrl, undefined); // history.replaceState({}, "", newUrl); } }, [transcript.response?.status]); const fullTranscript = topics.topics ?.map((topic) => topic.transcript) .join("\n\n") .replace(/ +/g, " ") .trim() || ""; if (transcript && transcript.response) { if (transcript.error || topics?.error) { return ( ); } if (!transcriptId || transcript?.loading || topics?.loading) { return ; } return ( <> {featureEnabled("sendToZulip") && ( setShowModal(v)} /> )}
{transcript?.response?.title && ( )} {waveform.waveform && mp3.media ? ( ) : waveform.error ? (
"error loading this recording"
) : ( )}
{transcript.response.long_summary ? ( setShowModal(true)} /> ) : (
{transcript.response.status == "processing" ? (

Loading Transcript

) : (

There was an error generating the final summary, please come back later

)}
)}
); } }