diff --git a/www/app/(app)/transcripts/[transcriptId]/page.tsx b/www/app/(app)/transcripts/[transcriptId]/page.tsx index 7940068e..f40beec7 100644 --- a/www/app/(app)/transcripts/[transcriptId]/page.tsx +++ b/www/app/(app)/transcripts/[transcriptId]/page.tsx @@ -54,15 +54,6 @@ export default function TranscriptDetails(details: TranscriptDetails) { ); } - if (mp3.audioDeleted) { - return ( - - ); - } - if (transcript?.loading || topics?.loading) { return ; } @@ -87,7 +78,7 @@ export default function TranscriptDetails(details: TranscriptDetails) { mt={4} mb={4} > - {waveform.waveform && mp3.media && topics.topics ? ( + {waveform.waveform && mp3.media && !mp3.audioDeleted && topics.topics ? ( ) : waveform.error ? (
"error loading this recording"
+ ) : mp3.audioDeleted ? ( +
Audio was deleted
) : ( )} diff --git a/www/app/(app)/transcripts/[transcriptId]/record/page.tsx b/www/app/(app)/transcripts/[transcriptId]/record/page.tsx index e9ca63e4..52072938 100644 --- a/www/app/(app)/transcripts/[transcriptId]/record/page.tsx +++ b/www/app/(app)/transcripts/[transcriptId]/record/page.tsx @@ -8,7 +8,6 @@ import "../../../../styles/button.css"; import { Topic } from "../../webSocketTypes"; import { lockWakeState, releaseWakeState } from "../../../../lib/wakeLock"; import { useRouter } from "next/navigation"; -import Player from "../../player"; import useMp3 from "../../useMp3"; import WaveformLoading from "../../waveformLoading"; import { Box, Text, Grid, Heading, VStack, Flex } from "@chakra-ui/react"; diff --git a/www/app/(app)/transcripts/useMp3.ts b/www/app/(app)/transcripts/useMp3.ts index e41e9362..7b687f1d 100644 --- a/www/app/(app)/transcripts/useMp3.ts +++ b/www/app/(app)/transcripts/useMp3.ts @@ -47,9 +47,11 @@ const useMp3 = (transcriptId: string, waiting?: boolean): Mp3Response => { }); }, [navigator.serviceWorker, !serviceWorker, accessTokenInfo]); + useEffect(() => { if (!transcriptId || !api || later) return; + let deleted: boolean | null = null; setTranscriptMetadataLoading(true); @@ -59,12 +61,20 @@ const useMp3 = (transcriptId: string, waiting?: boolean): Mp3Response => { audioElement.preload = "auto"; const handleCanPlay = () => { + if (deleted) { + console.error('Illegal state: audio supposed to be deleted, but was loaded'); + return; + } setAudioLoading(false); setAudioLoadingError(null); }; const handleError = () => { setAudioLoading(false); + if (deleted) { + // we arrived here earlier, ignore + return; + } setAudioLoadingError("Failed to load audio"); }; @@ -81,8 +91,14 @@ const useMp3 = (transcriptId: string, waiting?: boolean): Mp3Response => { api.v1TranscriptGet({ transcriptId }) .then((transcript) => { if (stopped) return; - setAudioDeleted(transcript.audio_deleted || false); + deleted = transcript.audio_deleted || false; + setAudioDeleted(deleted); setTranscriptMetadataLoadingError(null); + if (deleted) { + setMedia(null); + setAudioLoadingError(null); + } + // if deleted, media will or already returned error }) .catch((error) => { if (stopped) return;