Bladeren bron

@uppy/companion-client: fix body/url on upload-success (#4922)

* @uppy/companion-client: fix body/url on upload-success

* Fix url inside Companion instead

* try/catch JSON.parse
Merlijn Vos 1 jaar geleden
bovenliggende
commit
3d8ff79464

+ 5 - 2
packages/@uppy/companion-client/src/RequestClient.ts

@@ -479,13 +479,16 @@ export default class RequestClient<M extends Meta, B extends Body> {
                             break
                           }
                           case 'success': {
+                            // payload.response exists for xhr-upload but not for tus/transloadit
+                            const text = payload.response?.responseText
+
                             this.uppy.emit(
                               'upload-success',
                               this.uppy.getFile(file.id),
-                              // @ts-expect-error event expects a lot more data.
-                              // TODO: add missing data?
                               {
                                 uploadURL: payload.url,
+                                status: payload.response?.status ?? 200,
+                                body: text ? JSON.parse(text) : undefined,
                               },
                             )
                             socketAbortController?.abort?.()

+ 9 - 1
packages/@uppy/companion/src/server/Uploader.js

@@ -642,8 +642,16 @@ class Uploader {
         throw new Error(errMsg)
       }
 
+      let bodyURL = null
+      try {
+        bodyURL = JSON.parse(response.body)?.url
+      } catch {
+        // response.body can be undefined or an empty string
+        // in that case we ignore and continue.
+      }
+
       return {
-        url: null,
+        url: bodyURL,
         extraData: { response: getRespObj(response), bytesUploaded },
       }
     } catch (err) {