From d6fe694000b4e9d1301d2c9f30784bcb0b3a2e94 Mon Sep 17 00:00:00 2001
From: Patrizio Bekerle <patrizio@bekerle.com>
Date: Mon, 23 Mar 2020 15:09:19 +0100
Subject: [PATCH] Add file to event in case of error (VPU/Middleware/API#40)

---
 packages/file-handling/src/vpu-fileupload.js | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/packages/file-handling/src/vpu-fileupload.js b/packages/file-handling/src/vpu-fileupload.js
index e1f68a8e..ed74b2f2 100644
--- a/packages/file-handling/src/vpu-fileupload.js
+++ b/packages/file-handling/src/vpu-fileupload.js
@@ -103,20 +103,28 @@ class VPUFileUpload extends VPULitElement {
         this.asyncForEach(files, async (file) => this.uploadFile(file));
     }
 
-    sendFinishedEvent(response, file) {
+    sendFinishedEvent(response, file, sendFile = false) {
         response.json().then((json) => {
-            const data =  {
+            let data =  {
                 status: response.status,
                 filename: file.name,
                 json: json
             };
 
+            if (sendFile) {
+                data.file = file;
+            }
+
             console.log(data);
             const event = new CustomEvent("vpu-fileupload-finished", { "detail": data, bubbles: true, composed: true });
             this.dispatchEvent(event);
         });
     }
 
+    /**
+     * @param file
+     * @returns {Promise<void>}
+     */
     async uploadFile(file) {
         let url = this.url;
         let formData = new FormData();
@@ -133,12 +141,12 @@ class VPUFileUpload extends VPULitElement {
             .then((response) => {
                 /* Done. Inform the user */
                 console.log(`Status: ${response.status} for file ${file.name}`);
-                this.sendFinishedEvent(response, file);
+                this.sendFinishedEvent(response, file, response.status === 503);
             })
             .catch((response) => {
                 /* Error. Inform the user */
                 console.log(`Error status: ${response.status} for file ${file.name}`);
-                this.sendFinishedEvent(response, file);
+                this.sendFinishedEvent(response, file, true);
             })
     }
 
-- 
GitLab