fix(pdf): correct parse status handling and loader display logic

Update PDF viewer and document hook to improve parse status management:
- Set parseStatus to null on clear instead of 'pending' for accurate state
- Explicitly set initial parseStatus and reset parseProgress when loading a new document
- Adjust loader display logic to check for resolved parse status before showing expanded loader

Prevents UI inconsistencies and ensures parse progress is reflected correctly during document transitions.
This commit is contained in:
Richard R 2026-05-22 00:17:15 -06:00
parent 50c4330ab1
commit 1d4a301a5d
2 changed files with 7 additions and 2 deletions

View file

@ -76,12 +76,14 @@ export default function PDFViewerPage() {
const clearCurrDocRef = useRef(clearCurrDoc);
const [isNavigatingBack, setIsNavigatingBack] = useState(false);
const parseUiState: NonNullable<typeof parseStatus> = parseStatus ?? 'pending';
const hasResolvedParseStatus = parseStatus !== null;
const isParseReady = parseUiState === 'ready';
const forceReparseDisabled = isForceReparseDisabled(parseStatus);
const hasRealParseProgress = !!parseProgress
&& parseProgress.totalPages > 0
&& parseProgress.pagesParsed >= 0;
const shouldShowExpandedParseLoader = !isLoading
&& hasResolvedParseStatus
&& (parseUiState === 'pending' || parseUiState === 'running' || parseUiState === 'failed' || hasRealParseProgress);
useEffect(() => {

View file

@ -450,7 +450,7 @@ export function usePdfDocument(): PdfDocumentState {
setCurrDocName(undefined);
setCurrDocData(undefined);
setParsedDocument(null);
setParseStatus('pending');
setParseStatus(null);
setParseProgress(null);
setDocumentSettings(DEFAULT_DOCUMENT_SETTINGS);
@ -461,7 +461,10 @@ export function usePdfDocument(): PdfDocumentState {
return false;
}
if (meta.type === 'pdf') {
startParsedPolling(id, (meta.parseStatus ?? null) as PdfParseStatus | null);
const initialParseStatus = (meta.parseStatus ?? null) as PdfParseStatus | null;
setParseStatus(initialParseStatus);
setParseProgress(null);
startParsedPolling(id, initialParseStatus);
void fetchDocumentSettings(id, controller.signal);
}