瀏覽代碼

transloadit: fix unhandled promise rejections (#2948)

Antoine du Hamel 3 年之前
父節點
當前提交
9c26496a09
共有 2 個文件被更改,包括 8 次插入10 次删除
  1. 1 1
      packages/@uppy/core/src/index.js
  2. 7 9
      packages/@uppy/transloadit/src/index.js

+ 1 - 1
packages/@uppy/core/src/index.js

@@ -1095,7 +1095,7 @@ class Uppy {
 
       this.setState({ error: errorMsg })
 
-      if (file != null) {
+      if (file != null && file.id in this.getState().files) {
         this.setFileState(file.id, {
           error: errorMsg,
           response,

+ 7 - 9
packages/@uppy/transloadit/src/index.js

@@ -659,25 +659,23 @@ module.exports = class Transloadit extends BasePlugin {
     const files = fileIDs.map((id) => this.uppy.getFile(id))
     const assemblyOptions = new AssemblyOptions(files, this.opts)
 
-    return assemblyOptions.build().then(
-      (assemblies) => Promise.all(
-        assemblies.map(createAssembly)
-      ).then((createdAssemblies) => {
+    return assemblyOptions.build()
+      .then((assemblies) => Promise.all(assemblies.map(createAssembly)))
+      .then((createdAssemblies) => {
         const assemblyIDs = createdAssemblies.map(assembly => assembly.status.assembly_id)
         this._createAssemblyWatcher(assemblyIDs, fileIDs, uploadID)
-        createdAssemblies.map(assembly => this._connectAssembly(assembly))
-      }),
+        return Promise.all(createdAssemblies.map(assembly => this._connectAssembly(assembly)))
+      })
       // If something went wrong before any Assemblies could be created,
       // clear all processing state.
-      (err) => {
+      .catch((err) => {
         fileIDs.forEach((fileID) => {
           const file = this.uppy.getFile(fileID)
           this.uppy.emit('preprocess-complete', file)
           this.uppy.emit('upload-error', file, err)
         })
         throw err
-      }
-    )
+      })
   }
 
   _afterUpload (fileIDs, uploadID) {