Selaa lähdekoodia

transloadit: Do not reject the entire `upload()` when a single assembly fails

Renée Kooi 7 vuotta sitten
vanhempi
commit
a916983068
1 muutettua tiedostoa jossa 11 lisäystä ja 14 poistoa
  1. 11 14
      src/plugins/Transloadit/index.js

+ 11 - 14
src/plugins/Transloadit/index.js

@@ -411,12 +411,7 @@ module.exports = class Transloadit extends Plugin {
           this.core.emit('core:postprocess-complete', file.id)
           this.core.emit('core:postprocess-complete', file.id)
         })
         })
 
 
-        finishedAssemblies += 1
-        if (finishedAssemblies === assemblyIDs.length) {
-          // We're done, these listeners can be removed
-          removeListeners()
-          resolve()
-        }
+        checkAllComplete()
       }
       }
 
 
       const onAssemblyError = (assembly, error) => {
       const onAssemblyError = (assembly, error) => {
@@ -434,14 +429,7 @@ module.exports = class Transloadit extends Plugin {
           this.core.emit('core:postprocess-complete', file.id)
           this.core.emit('core:postprocess-complete', file.id)
         })
         })
 
 
-        // Should we remove the listeners here or should we keep handling finished
-        // assemblies?
-        // Doing this for now so that it's not possible to receive more postprocessing
-        // events once the upload has failed.
-        removeListeners()
-
-        // Reject the `afterUpload()` promise.
-        reject(error)
+        checkAllComplete()
       }
       }
 
 
       const onImportError = (assembly, fileID, error) => {
       const onImportError = (assembly, fileID, error) => {
@@ -457,6 +445,15 @@ module.exports = class Transloadit extends Plugin {
         onAssemblyError(assembly, error)
         onAssemblyError(assembly, error)
       }
       }
 
 
+      const checkAllComplete = () => {
+        finishedAssemblies += 1
+        if (finishedAssemblies === assemblyIDs.length) {
+          // We're done, these listeners can be removed
+          removeListeners()
+          resolve()
+        }
+      }
+
       const removeListeners = () => {
       const removeListeners = () => {
         this.core.off('transloadit:complete', onAssemblyFinished)
         this.core.off('transloadit:complete', onAssemblyFinished)
         this.core.off('transloadit:assembly-error', onAssemblyError)
         this.core.off('transloadit:assembly-error', onAssemblyError)