Inline the PDFThumbnailView.prototype.#finishRenderTask helper method
Given that the `draw` method is already asynchronous we can easily inline this old helper method, which shortens the code and improves consistency in the code-base (note the `BasePDFPageView`-implementation).
This commit is contained in:
parent
7ee061bcf1
commit
6548c9f1f6
@ -261,31 +261,12 @@ class PDFThumbnailView {
|
|||||||
zeroCanvas(reducedCanvas);
|
zeroCanvas(reducedCanvas);
|
||||||
}
|
}
|
||||||
|
|
||||||
async #finishRenderTask(renderTask, canvas, error = null) {
|
|
||||||
// The renderTask may have been replaced by a new one, so only remove
|
|
||||||
// the reference to the renderTask if it matches the one that is
|
|
||||||
// triggering this callback.
|
|
||||||
if (renderTask === this.renderTask) {
|
|
||||||
this.renderTask = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (error instanceof RenderingCancelledException) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.renderingState = RenderingStates.FINISHED;
|
|
||||||
this.#convertCanvasToImage(canvas);
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async draw() {
|
async draw() {
|
||||||
if (this.renderingState !== RenderingStates.INITIAL) {
|
if (this.renderingState !== RenderingStates.INITIAL) {
|
||||||
console.error("Must be in new state before drawing");
|
console.error("Must be in new state before drawing");
|
||||||
return undefined;
|
return;
|
||||||
}
|
}
|
||||||
const { pdfPage } = this;
|
const { pageColors, pdfPage } = this;
|
||||||
|
|
||||||
if (!pdfPage) {
|
if (!pdfPage) {
|
||||||
this.renderingState = RenderingStates.FINISHED;
|
this.renderingState = RenderingStates.FINISHED;
|
||||||
@ -321,26 +302,42 @@ class PDFThumbnailView {
|
|||||||
transform,
|
transform,
|
||||||
viewport: drawViewport,
|
viewport: drawViewport,
|
||||||
optionalContentConfigPromise: this._optionalContentConfigPromise,
|
optionalContentConfigPromise: this._optionalContentConfigPromise,
|
||||||
pageColors: this.pageColors,
|
pageColors,
|
||||||
};
|
};
|
||||||
const renderTask = (this.renderTask = pdfPage.render(renderContext));
|
const renderTask = (this.renderTask = pdfPage.render(renderContext));
|
||||||
renderTask.onContinue = renderContinueCallback;
|
renderTask.onContinue = renderContinueCallback;
|
||||||
|
|
||||||
const resultPromise = renderTask.promise.then(
|
let error = null;
|
||||||
() => this.#finishRenderTask(renderTask, canvas),
|
try {
|
||||||
error => this.#finishRenderTask(renderTask, canvas, error)
|
await renderTask.promise;
|
||||||
);
|
} catch (e) {
|
||||||
resultPromise.finally(() => {
|
if (e instanceof RenderingCancelledException) {
|
||||||
|
zeroCanvas(canvas);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
error = e;
|
||||||
|
} finally {
|
||||||
|
// The renderTask may have been replaced by a new one, so only remove
|
||||||
|
// the reference to the renderTask if it matches the one that is
|
||||||
|
// triggering this callback.
|
||||||
|
if (renderTask === this.renderTask) {
|
||||||
|
this.renderTask = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.renderingState = RenderingStates.FINISHED;
|
||||||
|
|
||||||
|
this.#convertCanvasToImage(canvas);
|
||||||
zeroCanvas(canvas);
|
zeroCanvas(canvas);
|
||||||
|
|
||||||
this.eventBus.dispatch("thumbnailrendered", {
|
this.eventBus.dispatch("thumbnailrendered", {
|
||||||
source: this,
|
source: this,
|
||||||
pageNumber: this.id,
|
pageNumber: this.id,
|
||||||
pdfPage: this.pdfPage,
|
pdfPage,
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return resultPromise;
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setImage(pageView) {
|
setImage(pageView) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user