Pārlūkot izejas kodu

Remote uploading implementation.

Harry Hedger 9 gadi atpakaļ
vecāks
revīzija
be67859e48
2 mainītis faili ar 49 papildinājumiem un 45 dzēšanām
  1. 25 18
      src/core/Core.js
  2. 24 27
      src/plugins/Tus10.js

+ 25 - 18
src/core/Core.js

@@ -78,23 +78,30 @@ export default class Core {
     const updatedFiles = Object.assign({}, this.state.files)
     const updatedFiles = Object.assign({}, this.state.files)
 
 
     files.forEach((file) => {
     files.forEach((file) => {
-      const fileName = file.name
-      const fileType = file.type.split('/')
-      const fileTypeGeneral = fileType[0]
-      const fileTypeSpecific = fileType[1]
-      const fileID = Utils.generateFileID(fileName)
-
-      updatedFiles[fileID] = {
-        acquiredBy: caller,
-        id: fileID,
-        name: fileName,
-        type: {
-          general: fileTypeGeneral,
-          specific: fileTypeSpecific
-        },
-        data: file,
-        progress: 0,
-        uploadURL: ''
+      if (!file.remote) {
+        const fileName = file.name
+        const fileType = file.type.split('/')
+        const fileTypeGeneral = fileType[0]
+        const fileTypeSpecific = fileType[1]
+        const fileID = Utils.generateFileID(fileName)
+
+        updatedFiles[fileID] = {
+          acquiredBy: caller,
+          id: fileID,
+          name: fileName,
+          type: {
+            general: fileTypeGeneral,
+            specific: fileTypeSpecific
+          },
+          data: file,
+          progress: 0,
+          uploadURL: ''
+        }
+      } else {
+        updatedFiles[file.id] = {
+          acquiredBy: caller,
+          data: file
+        }
       }
       }
 
 
       // TODO figure out if and when we need image preview —
       // TODO figure out if and when we need image preview —
@@ -127,7 +134,7 @@ export default class Core {
   }
   }
 
 
   /**
   /**
-   * Registeres listeners for all global actions, like:
+   * Registers listeners for all global actions, like:
    * `file-add`, `file-remove`, `upload-progress`, `reset`
    * `file-add`, `file-remove`, `upload-progress`, `reset`
    *
    *
    */
    */

+ 24 - 27
src/plugins/Tus10.js

@@ -32,6 +32,9 @@ export default class Tus10 extends Plugin {
 
 
     // Create a new tus upload
     // Create a new tus upload
     return new Promise((resolve, reject) => {
     return new Promise((resolve, reject) => {
+      if (file.remote) {
+        this.uploadRemote(file, current, total, resolve, reject)
+      }
       const upload = new tus.Upload(file.data, {
       const upload = new tus.Upload(file.data, {
 
 
         // TODO merge this.opts or this.opts.tus here
         // TODO merge this.opts or this.opts.tus here
@@ -70,26 +73,35 @@ export default class Tus10 extends Plugin {
 
 
       const filesForUpload = {}
       const filesForUpload = {}
       Object.keys(files).forEach((file) => {
       Object.keys(files).forEach((file) => {
-        if (files[file].progress === 0) {
+        if (files[file].progress === 0 || files[file].remote) {
           filesForUpload[file] = files[file]
           filesForUpload[file] = files[file]
         }
         }
       })
       })
 
 
-      const uploaders = []
+      this.uploadFiles(filesForUpload)
+    })
+  }
 
 
-      Object.keys(filesForUpload).forEach((fileID, i) => {
-        const file = filesForUpload[fileID]
-        const current = parseInt(i, 10) + 1
-        const total = Object.keys(filesForUpload).length
-        uploaders.push(this.upload(file, current, total))
-      })
+  uploadFiles (files) {
+    const uploaders = []
+    for (let i in files) {
+      const file = files[i]
+      const current = parseInt(i, 10) + 1
+      const total = files.length
+      uploaders.push(this.upload(file, current, total))
+    }
 
 
-      Promise.all(uploaders).then((result) => {
-        this.core.log('Tus has finished uploading!')
-      })
+    return Promise.all(uploaders).then(() => {
+      return {
+        uploadedCount: files.length
+      }
     })
     })
   }
   }
 
 
+  uploadRemote (file, current, total, resolve, reject) {
+    // do the thang
+  }
+
 /**
 /**
  * Add files to an array of `upload()` calles, passing the current and total file count numbers
  * Add files to an array of `upload()` calles, passing the current and total file count numbers
  *
  *
@@ -103,21 +115,6 @@ export default class Tus10 extends Plugin {
       results: results
       results: results
     })
     })
 
 
-    const files = results
-
-    // var uploaded  = [];
-    const uploaders = []
-    for (let i in files) {
-      const file = files[i]
-      const current = parseInt(i, 10) + 1
-      const total = files.length
-      uploaders.push(this.upload(file, current, total))
-    }
-
-    return Promise.all(uploaders).then(() => {
-      return {
-        uploadedCount: files.length
-      }
-    })
+    return this.uploadFiles(results)
   }
   }
 }
 }