From 4715b23bd4215e78fffda268092f5c571beb85ee Mon Sep 17 00:00:00 2001 From: Murderlon Date: Thu, 15 Feb 2024 11:27:52 +0100 Subject: [PATCH 1/3] @uppy/companion-client: fix body/url on upload-success --- packages/@uppy/companion-client/src/RequestClient.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/@uppy/companion-client/src/RequestClient.ts b/packages/@uppy/companion-client/src/RequestClient.ts index e45c3d9046..ed2b9d35de 100644 --- a/packages/@uppy/companion-client/src/RequestClient.ts +++ b/packages/@uppy/companion-client/src/RequestClient.ts @@ -485,10 +485,16 @@ export default class RequestClient { break } case 'success': { - // @ts-expect-error event expects a lot more data. - // TODO: add missing data? + // payload.response exists for xhr-upload but not for tus/transloadit + const text = payload.response?.responseText + const body = text ? JSON.parse(text) : undefined + // with xhr-upload the url may be undefined and send inside the responseText + const uploadURL = payload.url ?? body?.url + this.uppy.emit('upload-success', file, { - uploadURL: payload.url, + uploadURL, + status: payload.response?.status ?? 200, + body, }) socketAbortController?.abort?.() resolve() From 5ee582544886bb132a5eba0896286ba55de26881 Mon Sep 17 00:00:00 2001 From: Murderlon Date: Thu, 15 Feb 2024 11:43:01 +0100 Subject: [PATCH 2/3] Fix url inside Companion instead --- packages/@uppy/companion-client/src/RequestClient.ts | 7 ++----- packages/@uppy/companion/src/server/Uploader.js | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/@uppy/companion-client/src/RequestClient.ts b/packages/@uppy/companion-client/src/RequestClient.ts index ed2b9d35de..4c5d98fd81 100644 --- a/packages/@uppy/companion-client/src/RequestClient.ts +++ b/packages/@uppy/companion-client/src/RequestClient.ts @@ -487,14 +487,11 @@ export default class RequestClient { case 'success': { // payload.response exists for xhr-upload but not for tus/transloadit const text = payload.response?.responseText - const body = text ? JSON.parse(text) : undefined - // with xhr-upload the url may be undefined and send inside the responseText - const uploadURL = payload.url ?? body?.url this.uppy.emit('upload-success', file, { - uploadURL, + uploadURL: payload.url, status: payload.response?.status ?? 200, - body, + body: text ? JSON.parse(text) : undefined, }) socketAbortController?.abort?.() resolve() diff --git a/packages/@uppy/companion/src/server/Uploader.js b/packages/@uppy/companion/src/server/Uploader.js index 53d6e71a93..521f6c4738 100644 --- a/packages/@uppy/companion/src/server/Uploader.js +++ b/packages/@uppy/companion/src/server/Uploader.js @@ -643,7 +643,7 @@ class Uploader { } return { - url: null, + url: JSON.parse(response.body)?.url || null, extraData: { response: getRespObj(response), bytesUploaded }, } } catch (err) { From c769501e8064df114624e97fcfa67ca07b68bffb Mon Sep 17 00:00:00 2001 From: Murderlon Date: Thu, 22 Feb 2024 10:35:49 +0100 Subject: [PATCH 3/3] try/catch JSON.parse --- packages/@uppy/companion/src/server/Uploader.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/@uppy/companion/src/server/Uploader.js b/packages/@uppy/companion/src/server/Uploader.js index 521f6c4738..6375b1bdae 100644 --- a/packages/@uppy/companion/src/server/Uploader.js +++ b/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: JSON.parse(response.body)?.url || null, + url: bodyURL, extraData: { response: getRespObj(response), bytesUploaded }, } } catch (err) {