Browse Source

Emit response in `upload-error` and set it to file object in Core, like we do with `upload-success`

Artur Paikin 6 years ago
parent
commit
8ce263c9e3
2 changed files with 13 additions and 4 deletions
  1. 6 2
      packages/@uppy/core/src/index.js
  2. 7 2
      packages/@uppy/xhr-upload/src/index.js

+ 6 - 2
packages/@uppy/core/src/index.js

@@ -666,8 +666,12 @@ class Uppy {
       this.setState({ error: error.message })
     })
 
-    this.on('upload-error', (file, error) => {
-      this.setFileState(file.id, { error: error.message })
+    this.on('upload-error', (file, error, response) => {
+      this.setFileState(file.id, {
+        error: error.message,
+        response
+      })
+
       this.setState({ error: error.message })
 
       let message = this.i18n('failedToUpload', { file: file.name })

+ 7 - 2
packages/@uppy/xhr-upload/src/index.js

@@ -244,10 +244,15 @@ module.exports = class XHRUpload extends Plugin {
 
           return resolve(file)
         } else {
-          // const body = opts.getResponseData(xhr.responseText, xhr)
+          const body = opts.getResponseData(xhr.responseText, xhr)
           const error = buildResponseError(xhr, opts.getResponseError(xhr.responseText, xhr))
 
-          this.uppy.emit('upload-error', file, error)
+          const response = {
+            status: ev.target.status,
+            body
+          }
+
+          this.uppy.emit('upload-error', file, error, response)
           return reject(error)
         }
       })