diff --git a/src/app/(app)/html/[id]/useHtmlDocument.ts b/src/app/(app)/html/[id]/useHtmlDocument.ts index 23bcc94..3b91553 100644 --- a/src/app/(app)/html/[id]/useHtmlDocument.ts +++ b/src/app/(app)/html/[id]/useHtmlDocument.ts @@ -94,14 +94,18 @@ export function useHtmlDocument(): HtmlDocumentState { const lastFedDocRef = useRef(null); useEffect(() => { if (currDocData === undefined) { + lastFedDocRef.current = null; + setTTSText(''); setIsPlaybackReady(false); return; } if (!currDocText) { + lastFedDocRef.current = null; + setTTSText(''); setIsPlaybackReady(true); return; } - const key = `${currDocData ?? ''}::${currDocText.length}`; + const key = `${currDocName ?? ''}::${currDocData ?? ''}::${currDocText.length}`; if (lastFedDocRef.current === key) { setIsPlaybackReady(true); return; @@ -110,19 +114,22 @@ export function useHtmlDocument(): HtmlDocumentState { lastFedDocRef.current = key; setTTSText(currDocText); setIsPlaybackReady(true); - }, [currDocText, currDocData, setTTSText]); + }, [currDocName, currDocText, currDocData, setTTSText]); const clearCurrDoc = useCallback(() => { setCurrDocData(undefined); setCurrDocName(undefined); setIsPlaybackReady(false); lastFedDocRef.current = null; + setTTSText(''); stop(); - }, [stop]); + }, [setTTSText, stop]); const setCurrentDocument = useCallback(async (id: string): Promise => { try { setIsPlaybackReady(false); + lastFedDocRef.current = null; + setTTSText(''); const meta = await getDocumentMetadata(id); if (!meta) { console.error('Document not found on server'); @@ -141,7 +148,7 @@ export function useHtmlDocument(): HtmlDocumentState { console.error('Failed to get HTML document:', error); clearCurrDoc(); } - }, [clearCurrDoc]); + }, [clearCurrDoc, setTTSText]); const audiobookAdapter = useMemo( () =>