From 9e97e5a2906a042dfb4177e582bddf2cbd086d08 Mon Sep 17 00:00:00 2001
From: Jose Manuel Serrano Amaut <a20122128@pucp.pe>
Date: Sun, 5 Mar 2023 01:58:49 -0500
Subject: [PATCH] [WIP]: Fixed issue that set undefined the uploadMessage.
 Missing solve issue that copies undefined attributes; However is not
 critical.

---
 .../dropzone-demo/AdvancedDropzoneDemo.jsx    | 30 +++++++++++------
 .../main-page/DropzoneMainPage.jsx            |  6 ++--
 .../dropzone/components/dropzone/Dropzone.tsx | 33 ++++++++++++-------
 src/files-ui/core/types/ExtFile.ts            |  9 ++---
 src/files-ui/core/upload/utils.upload.ts      | 13 ++++++--
 5 files changed, 61 insertions(+), 30 deletions(-)

diff --git a/src/components/demo-components/dropzone-demo/AdvancedDropzoneDemo.jsx b/src/components/demo-components/dropzone-demo/AdvancedDropzoneDemo.jsx
index f71d0c7..7fb9aea 100644
--- a/src/components/demo-components/dropzone-demo/AdvancedDropzoneDemo.jsx
+++ b/src/components/demo-components/dropzone-demo/AdvancedDropzoneDemo.jsx
@@ -8,6 +8,7 @@ import {
 } from "../../../files-ui";
 import { useEffect, useState } from "react";
 import axios from "axios";
+import { ExtFileInstance } from "../../../files-ui/core";
 const REMOTE =
   "https://files-ui-express-static-file-storage.vercel.app/39d33dff2d41b522c1ea276c4b82507f96b9699493d2e7b3f5c864ba743d9503";
 //const LOCAL = "http://localhost/39d33dff2d41b522c1ea276c4b82507f96b9699493d2e7b3f5c864ba743d9503";
@@ -19,6 +20,15 @@ export default function AdvancedDropzoneDemo() {
 
   const updateFiles = (incommingFiles) => {
     console.log("incomming extFiles", incommingFiles);
+    const arrExtFIleInstances = incommingFiles.map(
+      (extFile) => new ExtFileInstance(extFile)
+    );
+    const listExtFileObjects = arrExtFIleInstances.map((extFileInstance) =>
+      extFileInstance.toExtFile()
+    );
+    console.log("incomming arrExtFIleInstances", arrExtFIleInstances);
+    console.log("incomming listExtFileObjects", listExtFileObjects);
+
     setExtFiles(incommingFiles);
   };
   const onDelete = (id) => {
@@ -56,7 +66,7 @@ export default function AdvancedDropzoneDemo() {
     }
   }
   const handleAbort = (id) => {
-   // alert(id);
+    // alert(id);
     setExtFiles(
       extFiles.map((ef) => {
         if (ef.id === id) {
@@ -65,16 +75,16 @@ export default function AdvancedDropzoneDemo() {
       })
     );
   };
-  const handleCancel= (id) => {
+  const handleCancel = (id) => {
     // alert(id);
-     setExtFiles(
-       extFiles.map((ef) => {
-         if (ef.id === id) {
-           return { ...ef, uploadStatus: undefined };
-         } else return { ...ef };
-       })
-     );
-   };
+    setExtFiles(
+      extFiles.map((ef) => {
+        if (ef.id === id) {
+          return { ...ef, uploadStatus: undefined };
+        } else return { ...ef };
+      })
+    );
+  };
   return (
     <>
       <Dropzone
diff --git a/src/components/demo-components/main-page/DropzoneMainPage.jsx b/src/components/demo-components/main-page/DropzoneMainPage.jsx
index 2ded2ed..adde2c9 100644
--- a/src/components/demo-components/main-page/DropzoneMainPage.jsx
+++ b/src/components/demo-components/main-page/DropzoneMainPage.jsx
@@ -41,13 +41,12 @@ const DropzoneMainPage = ({ darkMode = false }) => {
         // minHeight="400px"
         onChange={updateFiles}
         value={files}
-        maxFileSize={28 * 1024 * 10}
+        maxFileSize={28 * 1024 * 1024}
         maxFiles={5}
-        accept=".jpg, .png, application/json, video/*"
+        accept=".jpg, .png, application/json, video/*, .pdf"
         fakeUpload
         behaviour="add"
         uploadConfig={{ autoUpload: true , url:"fdbd"}}
-        //uploadConfig={{ autoUpload: true, url:"fdbd" }}
       >
         {files.length > 0 &&
           files.map((file) => (
@@ -62,6 +61,7 @@ const DropzoneMainPage = ({ darkMode = false }) => {
               hd
               onSee={handleSee}
               resultOnTooltip
+              //uploadMessage="llalalal"
             />
           ))}
       </Dropzone>
diff --git a/src/files-ui/components/dropzone/components/dropzone/Dropzone.tsx b/src/files-ui/components/dropzone/components/dropzone/Dropzone.tsx
index 3d2476e..a5d4d61 100644
--- a/src/files-ui/components/dropzone/components/dropzone/Dropzone.tsx
+++ b/src/files-ui/components/dropzone/components/dropzone/Dropzone.tsx
@@ -319,22 +319,33 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
         currentExtFileInstance.uploadStatus = uploadedFile.uploadStatus;
         currentExtFileInstance.uploadMessage = uploadedFile.uploadMessage;
 
-        console.log("fake uploadResponse currentExtFileInstance", currentExtFileInstance);
+        console.log(
+          "fake uploadResponse currentExtFileInstance",
+          currentExtFileInstance
+        );
+        console.log(
+          "fake uploadResponse currentExtFileInstance",
+          currentExtFileInstance.uploadStatus
+        );
+        console.log(
+          "fake uploadResponse currentExtFileInstance",
+          currentExtFileInstance.uploadMessage
+        );
+
+        console.log(
+          "pre sanitizeArrExtFile",
+          arrOfExtFilesInstances.map((F) => {return{status:F.uploadStatus,message:F.uploadMessage}})
+        );
 
 
-        //add fake progress only on fakeupload
-        /*         if (fakeUpload) {
-          console.log(
-            "Adding fake progress",
-            fakeUpload,
-            uploadedFile.progress
-          );
-          currentExtFileInstance.progress = uploadedFile.progress;
-        } */
         //CHANGE
         if (!(currentExtFileInstance.uploadStatus === "aborted"))
           await sleepTransition();
 
+        console.log(
+          "pre sanitizeArrExtFile",
+          arrOfExtFilesInstances.map((F) => {return{status:F.uploadStatus,message:F.uploadMessage}})
+        );
         handleFilesChange(sanitizeArrExtFile(arrOfExtFilesInstances), true);
 
         if (uploadedFile.uploadStatus === "error") {
@@ -427,7 +438,7 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
   ): void => {
     console.log(
       "handleFilesChange",
-      extFileList.map((F) => F.uploadStatus)
+      extFileList.map((F) => F.uploadMessage)
     );
     let finalExtFileList: ExtFile[] =
       behaviour === "add" && !isUploading
diff --git a/src/files-ui/core/types/ExtFile.ts b/src/files-ui/core/types/ExtFile.ts
index 782b3f6..1a69b3a 100644
--- a/src/files-ui/core/types/ExtFile.ts
+++ b/src/files-ui/core/types/ExtFile.ts
@@ -200,7 +200,7 @@ export class ExtFileInstance {
 
     }
 
-    static toExtFile(extFile: ExtFileInstance): ExtFile {
+    static toExtFile(extFileInstance: ExtFileInstance): ExtFile {
         const
             {
                 id,
@@ -219,7 +219,7 @@ export class ExtFileInstance {
                 extraUploadData,
                 serverResponse,
                 downloadUrl
-            } = extFile;
+            } = extFileInstance;
         return {
             id,
             file,
@@ -276,8 +276,9 @@ export class ExtFileInstance {
             extraUploadData,
             serverResponse,
             downloadUrl
-        };
-        return result;
+        } as ExtFile;
+        console.log("incomming result", { ...result });
+        return { ...result };
     }
 
     static mock = (): ExtFileInstance => {
diff --git a/src/files-ui/core/upload/utils.upload.ts b/src/files-ui/core/upload/utils.upload.ts
index 1aa9f90..316ab7f 100644
--- a/src/files-ui/core/upload/utils.upload.ts
+++ b/src/files-ui/core/upload/utils.upload.ts
@@ -124,8 +124,13 @@ export const sleepTransition = (time = 1500
 }
 
 export const sanitizeArrExtFile = (arrExtFile: ExtFileInstance[]): ExtFile[] => {
+    console.log(
+        "sanitizeArrExtFile",
+        arrExtFile.map((F) => { return { status: F.uploadStatus, message: F.uploadMessage } })
+    );
     return arrExtFile.filter((extFileInstance: ExtFileInstance) =>
         !extFileInstance.extraData?.deleted)
+
         .map((extFileInstance: ExtFileInstance) => {
             if (extFileInstance.uploadStatus === "aborted"
                 && !extFileInstance.uploadMessage) {
@@ -133,7 +138,7 @@ export const sanitizeArrExtFile = (arrExtFile: ExtFileInstance[]): ExtFile[] =>
                 //extFileInstance.uploadStatus = "error";
             }
 
-            return extFileInstance.toExtFile()
+            return ExtFileInstance.toExtFile(extFileInstance) as ExtFile
         });
 }
 /**
@@ -148,19 +153,23 @@ export const setNextUploadStatus = (
     const prevStatus: UPLOADSTATUS | undefined = extFileInstance.uploadStatus;
     const nextStstaus: UPLOADSTATUS | undefined = extFileobj.uploadStatus;
 
+    console.log("setNextUploadStatus", prevStatus, nextStstaus);
+    console.log("setNextUploadStatus", extFileInstance.uploadMessage, extFileobj.uploadMessage);
     if (
         prevStatus === "preparing" &&
         ["aborted", undefined].includes(nextStstaus)
     ) {
         extFileInstance.uploadStatus = undefined;
+        extFileInstance.uploadMessage = extFileobj.uploadMessage;
+
     } else if (
         prevStatus === "uploading" &&
         ["aborted", undefined].includes(nextStstaus)
     ) {
         extFileInstance.uploadStatus = "aborted";
+        extFileInstance.uploadMessage = extFileobj.uploadMessage;
 
     }
-    extFileInstance.uploadMessage = extFileobj.uploadMessage;
 
 }
 
-- 
GitLab