From 5053856f3ecc6de7164d9a67490336fd7b5f19d3 Mon Sep 17 00:00:00 2001
From: Lucas Schoenfelder <les17@inf.ufpr.br>
Date: Thu, 6 Aug 2020 09:52:12 -0300
Subject: [PATCH] almost done

---
 .../UploadPageComponents/DragAndDrop.tsx       |  2 +-
 .../UploadPageComponents/FileToUpload.ts       | 18 +++++++++++-------
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/Components/UploadPageComponents/DragAndDrop.tsx b/src/Components/UploadPageComponents/DragAndDrop.tsx
index 29e00e6e..68dd134b 100644
--- a/src/Components/UploadPageComponents/DragAndDrop.tsx
+++ b/src/Components/UploadPageComponents/DragAndDrop.tsx
@@ -16,7 +16,7 @@ GNU Affero General Public License for more details.
 You should have received a copy of the GNU Affero General Public License
 along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>.*/
 
-import React, {useState} from 'react'
+import React, {useState, useEffect} from 'react'
 import CloudUploadIcon from '@material-ui/icons/CloudUpload';
 import {DottedBox, BlueButton} from './StyledComponents.js';
 import FileToUpload from './FileToUpload'
diff --git a/src/Components/UploadPageComponents/FileToUpload.ts b/src/Components/UploadPageComponents/FileToUpload.ts
index 9812ed81..24f3613b 100644
--- a/src/Components/UploadPageComponents/FileToUpload.ts
+++ b/src/Components/UploadPageComponents/FileToUpload.ts
@@ -9,9 +9,18 @@ export default class FileToUpload {
     private _chunkNumber: number;
     currentChunkStartByte: number;
     currentChunkFinalByte: number;
+    uploadFinished: boolean = false;
 
     constructor(file: File, name: string, draftID : string) {
         this.request = new XMLHttpRequest();
+        this.request.onreadystatechange = function(ev: Event) {
+            if(this.readyState === XMLHttpRequest.DONE){
+                if (this.getResponseHeader('access-token') != null) {
+                    console.log(this.getResponseHeader('access-token'))
+                    sessionStorage.setItem('@portalmec/accessToken', this.getResponseHeader('access-token')!)
+                }
+            }
+        }
         this.request.overrideMimeType('application/octet-stream');
 
         this.file = file;
@@ -47,6 +56,7 @@ export default class FileToUpload {
 
             if(this.currentChunkFinalByte === this.file.size) {
                 alert('Yay, upload completed! Chao!');
+                this.uploadFinished = true;
                 return;
             } else if (remainingBytes < FileToUpload.chunkSize) {
                 // if the remaining chunk is smaller than the chunk size we defined
@@ -59,8 +69,8 @@ export default class FileToUpload {
                 this.currentChunkFinalByte = this.currentChunkStartByte + FileToUpload.chunkSize;
             }
 
-            this.uploadFile();
             this._chunkNumber = this._chunkNumber + 1
+            this.uploadFile();
         }
 
         //add attributes
@@ -74,12 +84,6 @@ export default class FileToUpload {
         formData.append('_totalSize', String(this.file.size));
         formData.append('file', chunk);
 
-        this.request.onreadystatechange = (request: XMLHttpRequest, event: Event): any => {
-            if(request.readyState === XMLHttpRequest.DONE){
-                console.log(request.getResponseHeader('access-token'))
-                sessionStorage.setItem('@portalmec/accessToken', request.getResponseHeader('access-token')!)
-            }
-        }
         this.request.send(formData);// send it now!
     }
 
-- 
GitLab