From 895e96fa8e524c32d99fc8475e7a86cb4adaef1b Mon Sep 17 00:00:00 2001 From: Merlijn Vos Date: Mon, 19 Sep 2022 13:58:54 +0200 Subject: [PATCH] Fix endless webcam re-render with Golden Retriever (#4111) Co-authored-by: Antoine du Hamel --- packages/@uppy/golden-retriever/src/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/@uppy/golden-retriever/src/index.js b/packages/@uppy/golden-retriever/src/index.js index 8871ba294..45bb865c1 100644 --- a/packages/@uppy/golden-retriever/src/index.js +++ b/packages/@uppy/golden-retriever/src/index.js @@ -113,7 +113,9 @@ export default class GoldenRetriever extends BasePlugin { // If all files have been removed by the user, clear recovery state if (Object.keys(filesToSave).length === 0) { - this.uppy.setState({ recoveredState: null }) + if (this.uppy.getState().recoveredState !== null) { + this.uppy.setState({ recoveredState: null }) + } MetaDataStore.cleanup(this.uppy.opts.id) return } @@ -350,7 +352,6 @@ export default class GoldenRetriever extends BasePlugin { }) } else { this.uppy.log('[GoldenRetriever] No files need to be loaded, only restoring processing state...') - this.onBlobsLoaded([]) } } @@ -361,6 +362,9 @@ export default class GoldenRetriever extends BasePlugin { this.uppy.on('file-added', this.addBlobToStores) this.uppy.on('file-editor:complete', this.replaceBlobInStores) this.uppy.on('file-removed', this.removeBlobFromStores) + // TODO: the `state-update` is bad practise. It fires on any state change in Uppy + // or any state change in any of the plugins. We should to able to only listen + // for the state changes we need, somehow. this.uppy.on('state-update', this.saveFilesStateToLocalStorage) this.uppy.on('restore-confirmed', this.handleRestoreConfirmed) this.uppy.on('restore-canceled', this.abortRestore)