fix: separate resource previews from downloads

This commit is contained in:
2026-07-22 20:06:18 +02:00
parent 50268cb185
commit e6a8111d51
8 changed files with 257 additions and 28 deletions

View File

@@ -308,7 +308,7 @@ export function OneNoteApplication({
}
};
const loadSelectedResource = useCallback(
const previewSelectedResource = useCallback(
async (resourceId: string): Promise<OneNoteResourcePayloadDto> => {
const client = activeClient.current;
if (!client || state.phase !== 'loaded') {
@@ -317,7 +317,7 @@ export function OneNoteApplication({
'The local parser session is no longer available.'
);
}
const response = await client.getResource(
const response = await client.getResourcePreview(
state.source.sessionId,
resourceId,
state.source.kind === 'onepkg' ? selectedSectionId : undefined
@@ -335,7 +335,25 @@ export function OneNoteApplication({
const downloadSelectedResource = useCallback(
async (resourceId: string, suggestedName?: string): Promise<void> => {
const resource = await loadSelectedResource(resourceId);
const client = activeClient.current;
if (!client || state.phase !== 'loaded') {
throw new WorkerClientError(
'session-not-available',
'The local parser session is no longer available.'
);
}
const response = await client.getResourceDownload(
state.source.sessionId,
resourceId,
state.source.kind === 'onepkg' ? selectedSectionId : undefined
);
if (response.type === 'failure') {
throw new WorkerClientError(
response.error.code,
response.error.message
);
}
const resource = response.resource;
const filename = safeDownloadFilename(
resource.filename ??
suggestedName ??
@@ -343,7 +361,7 @@ export function OneNoteApplication({
);
downloadBrowserFile(resource.bytes, resource.mediaType, filename);
},
[loadSelectedResource]
[selectedSectionId, state]
);
const exportLoadedSource = useCallback(
@@ -464,7 +482,7 @@ export function OneNoteApplication({
error={
pageState.phase === 'error' ? pageState.message : undefined
}
loadResource={loadSelectedResource}
previewResource={previewSelectedResource}
downloadResource={downloadSelectedResource}
/>
</div>