"use client"; import Modal from "../modal"; import useTopics from "../useTopics"; import useWaveform from "../useWaveform"; import useMp3 from "../useMp3"; import { TopicList } from "./_components/TopicList"; import { Topic } from "../webSocketTypes"; import React, { useEffect, useState, use } from "react"; import FinalSummary from "./finalSummary"; import TranscriptTitle from "../transcriptTitle"; import Player from "../player"; import { useRouter } from "next/navigation"; import { Box, Flex, Grid, GridItem, Skeleton, Text } from "@chakra-ui/react"; import { useTranscriptGet } from "../../../lib/apiHooks"; import { TranscriptStatus } from "../../../lib/transcript"; type TranscriptDetails = { params: Promise<{ transcriptId: string; }>; }; export default function TranscriptDetails(details: TranscriptDetails) { const params = use(details.params); const transcriptId = params.transcriptId; const router = useRouter(); const statusToRedirect = [ "idle", "recording", "processing", ] satisfies TranscriptStatus[] as TranscriptStatus[]; const transcript = useTranscriptGet(transcriptId); const waiting = transcript.data && statusToRedirect.includes(transcript.data.status); const mp3 = useMp3(transcriptId, waiting); const topics = useTopics(transcriptId); const waveform = useWaveform( transcriptId, waiting || mp3.audioDeleted === true, ); const useActiveTopic = useState(null); useEffect(() => { if (waiting) { const newUrl = "/transcripts/" + 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.replace(newUrl); // history.replaceState({}, "", newUrl); } }, [waiting]); if (transcript.error || topics?.error) { return ( ); } if (transcript?.isLoading || topics?.loading) { return ; } if (mp3.error) { return ( ); } return ( <> {!mp3.audioDeleted && ( <> {waveform.waveform && mp3.media && topics.topics ? ( ) : !mp3.loading && (waveform.error || mp3.error) ? ( Error loading this recording ) : ( )} )} { transcript.refetch().then(() => {}); }} /> {mp3.audioDeleted && ( No audio is available because one or more participants didn't consent to keep the audio )} {transcript.data && topics.topics ? ( <> { transcript.refetch(); }} /> ) : (
{transcript?.data?.status == "processing" ? ( Loading Transcript ) : ( There was an error generating the final summary, please come back later )}
)}
); }