Skip to content

Commit

Permalink
Fix already cancellable tasks wrapped in makeCancellable
Browse files Browse the repository at this point in the history
  • Loading branch information
wojtekmaj committed Nov 10, 2022
1 parent 4962d3b commit b14700a
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 13 deletions.
11 changes: 5 additions & 6 deletions src/Document.jsx
Expand Up @@ -115,15 +115,14 @@ export default class Document extends PureComponent {

const { options, onLoadProgress, onPassword } = this.props;

this.loadingTask = pdfjs.getDocument({ ...source, ...options });
this.loadingTask.onPassword = onPassword;
const destroyable = pdfjs.getDocument({ ...source, ...options });
destroyable.onPassword = onPassword;
if (onLoadProgress) {
this.loadingTask.onProgress = onLoadProgress;
destroyable.onProgress = onLoadProgress;
}
const cancellable = makeCancellable(this.loadingTask.promise);
this.runningTask = cancellable;
this.loadingTask = destroyable;

cancellable.promise
destroyable.promise
.then((pdf) => {
this.setState((prevState) => {
if (prevState.pdf && prevState.pdf.fingerprint === pdf.fingerprint) {
Expand Down
6 changes: 3 additions & 3 deletions src/Page/PageCanvas.jsx
@@ -1,6 +1,5 @@
import React, { createRef, PureComponent } from 'react';
import PropTypes from 'prop-types';
import makeCancellable from 'make-cancellable-promise';
import mergeRefs from 'merge-refs';
import warning from 'tiny-warning';
import * as pdfjs from 'pdfjs-dist/build/pdf';
Expand Down Expand Up @@ -121,9 +120,10 @@ export class PageCanvasInternal extends PureComponent {
// If another render is in progress, let's cancel it
this.cancelRenderingTask();

this.renderer = makeCancellable(page.render(renderContext).promise);
const cancellable = page.render(renderContext);
this.renderer = cancellable;

return this.renderer.promise.then(this.onRenderSuccess).catch(this.onRenderError);
return cancellable.promise.then(this.onRenderSuccess).catch(this.onRenderError);
};

render() {
Expand Down
7 changes: 3 additions & 4 deletions src/Page/TextLayer.jsx
Expand Up @@ -126,16 +126,15 @@ export class TextLayerInternal extends PureComponent {
// If another rendering is in progress, let's cancel it
cancelRunningTask(this.runningTask);

this.layerElement.current.innerHTML = '';

const parameters = {
container: this.layerElement.current,
textContent,
viewport,
};

this.layerElement.current.innerHTML = '';

this.runningTask = pdfjs.renderTextLayer(parameters);
const cancellable = makeCancellable(this.runningTask.promise);
const cancellable = pdfjs.renderTextLayer(parameters);
this.runningTask = cancellable;

cancellable.promise
Expand Down

0 comments on commit b14700a

Please sign in to comment.