feat: render rich OneNote pages and resources
This commit is contained in:
@@ -2,6 +2,7 @@ import type {
|
||||
PageWorkerResponse,
|
||||
ParseWorkerRequest,
|
||||
ParseWorkerResponse,
|
||||
ResourceWorkerResponse,
|
||||
WorkerRequest,
|
||||
WorkerFailure,
|
||||
WorkerResponse,
|
||||
@@ -17,7 +18,9 @@ export interface WorkerPort {
|
||||
}
|
||||
|
||||
type PendingRequest = {
|
||||
resolve: (response: ParseWorkerResponse | PageWorkerResponse) => void;
|
||||
resolve: (
|
||||
response: ParseWorkerResponse | PageWorkerResponse | ResourceWorkerResponse
|
||||
) => void;
|
||||
reject: (error: WorkerClientError) => void;
|
||||
};
|
||||
|
||||
@@ -123,6 +126,36 @@ export class OneNoteWorkerClient {
|
||||
});
|
||||
}
|
||||
|
||||
getResource(
|
||||
sessionId: string,
|
||||
resourceId: string,
|
||||
sectionId?: string
|
||||
): Promise<ResourceWorkerResponse> {
|
||||
if (this.terminated) {
|
||||
return Promise.reject(
|
||||
new WorkerClientError(
|
||||
'worker-failure',
|
||||
'The local parser worker has already been terminated.'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
const requestId = `resource-${++this.requestSequence}`;
|
||||
return new Promise((resolve, reject) => {
|
||||
this.pending.set(requestId, {
|
||||
resolve: (response) => resolve(response as ResourceWorkerResponse),
|
||||
reject,
|
||||
});
|
||||
this.worker.postMessage({
|
||||
type: 'get-resource',
|
||||
requestId,
|
||||
sessionId,
|
||||
resourceId,
|
||||
...(sectionId === undefined ? {} : { sectionId }),
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
terminate(): void {
|
||||
if (this.terminated) return;
|
||||
this.terminated = true;
|
||||
|
||||
Reference in New Issue
Block a user