Explorar o código

Merge branch 'master' of https://github.com/transloadit/uppy

Artur Paikin %!s(int64=7) %!d(string=hai) anos
pai
achega
5733dfff93
Modificáronse 3 ficheiros con 39 adicións e 17 borrados
  1. 1 1
      CHANGELOG.md
  2. 29 10
      src/plugins/GoldenRetriever/index.js
  3. 9 6
      src/plugins/Tus.js

+ 1 - 1
CHANGELOG.md

@@ -103,7 +103,7 @@ To be released: 2018-03-01.
 - [ ] goldenretriever: add “ghost” files (@arturi)
 - [ ] goldenretriever: add “ghost” files (@arturi)
 - [ ] core: i18n all strings + document them
 - [ ] core: i18n all strings + document them
 - [ ] core: update file-type
 - [ ] core: update file-type
-- [ ] goldenretriever: warn, not error, when files cannot be saved by goldenretriever (@goto-bus-stop)
+- [x] goldenretriever: warn, not error, when files cannot be saved by goldenretriever (#641 / @goto-bus-stop)
 - [ ] docs: quick start guide: https://community.transloadit.com/t/quick-start-guide-would-be-really-helpful/14605 (@arturi)
 - [ ] docs: quick start guide: https://community.transloadit.com/t/quick-start-guide-would-be-really-helpful/14605 (@arturi)
 - [ ] docs: on writing plugins (@goto-bus-stop)
 - [ ] docs: on writing plugins (@goto-bus-stop)
 - [ ] docs: all useful events (@arturi)
 - [ ] docs: all useful events (@arturi)

+ 29 - 10
src/plugins/GoldenRetriever/index.js

@@ -126,11 +126,13 @@ module.exports = class GoldenRetriever extends Plugin {
       if (numberOfFilesRecovered === numberOfFilesTryingToRecover) {
       if (numberOfFilesRecovered === numberOfFilesTryingToRecover) {
         this.uppy.log(`[GoldenRetriever] Successfully recovered ${numberOfFilesRecovered} blobs from Service Worker!`)
         this.uppy.log(`[GoldenRetriever] Successfully recovered ${numberOfFilesRecovered} blobs from Service Worker!`)
         this.uppy.info(`Successfully recovered ${numberOfFilesRecovered} files`, 'success', 3000)
         this.uppy.info(`Successfully recovered ${numberOfFilesRecovered} files`, 'success', 3000)
-        this.onBlobsLoaded(blobs)
-      } else {
-        this.uppy.log('[GoldenRetriever] Failed to recover blobs from Service Worker, trying IndexedDB now...')
-        this.loadFileBlobsFromIndexedDB()
+        return this.onBlobsLoaded(blobs)
       }
       }
+      this.uppy.log('[GoldenRetriever] No blobs found in Service Worker, trying IndexedDB now...')
+      return this.loadFileBlobsFromIndexedDB()
+    }).catch((err) => {
+      this.uppy.log('[GoldenRetriever] Failed to recover blobs from Service Worker', 'warning')
+      this.uppy.log(err)
     })
     })
   }
   }
 
 
@@ -139,11 +141,14 @@ module.exports = class GoldenRetriever extends Plugin {
       const numberOfFilesRecovered = Object.keys(blobs).length
       const numberOfFilesRecovered = Object.keys(blobs).length
 
 
       if (numberOfFilesRecovered > 0) {
       if (numberOfFilesRecovered > 0) {
-        this.uppy.log(`[GoldenRetriever] Successfully recovered ${numberOfFilesRecovered} blobs from Indexed DB!`)
+        this.uppy.log(`[GoldenRetriever] Successfully recovered ${numberOfFilesRecovered} blobs from IndexedDB!`)
         this.uppy.info(`Successfully recovered ${numberOfFilesRecovered} files`, 'success', 3000)
         this.uppy.info(`Successfully recovered ${numberOfFilesRecovered} files`, 'success', 3000)
         return this.onBlobsLoaded(blobs)
         return this.onBlobsLoaded(blobs)
       }
       }
-      this.uppy.log('[GoldenRetriever] Couldn’t recover anything from IndexedDB :(')
+      this.uppy.log('[GoldenRetriever] No blobs found in IndexedDB')
+    }).catch((err) => {
+      this.uppy.log('[GoldenRetriever] Failed to recover blobs from IndexedDB', 'warning')
+      this.uppy.log(err)
     })
     })
   }
   }
 
 
@@ -178,6 +183,9 @@ module.exports = class GoldenRetriever extends Plugin {
     if (obsoleteBlobs.length) {
     if (obsoleteBlobs.length) {
       this.deleteBlobs(obsoleteBlobs).then(() => {
       this.deleteBlobs(obsoleteBlobs).then(() => {
         this.uppy.log(`[GoldenRetriever] Cleaned up ${obsoleteBlobs.length} old files`)
         this.uppy.log(`[GoldenRetriever] Cleaned up ${obsoleteBlobs.length} old files`)
+      }).catch((err) => {
+        this.uppy.log(`[GoldenRetriever] Could not clean up ${obsoleteBlobs.length} old files`, 'warning')
+        this.uppy.log(err)
       })
       })
     }
     }
   }
   }
@@ -216,26 +224,37 @@ module.exports = class GoldenRetriever extends Plugin {
 
 
       if (this.ServiceWorkerStore) {
       if (this.ServiceWorkerStore) {
         this.ServiceWorkerStore.put(file).catch((err) => {
         this.ServiceWorkerStore.put(file).catch((err) => {
-          this.uppy.log('[GoldenRetriever] Could not store file', 'error')
+          this.uppy.log('[GoldenRetriever] Could not store file', 'warning')
           this.uppy.log(err)
           this.uppy.log(err)
         })
         })
       }
       }
 
 
       this.IndexedDBStore.put(file).catch((err) => {
       this.IndexedDBStore.put(file).catch((err) => {
-        this.uppy.log('[GoldenRetriever] Could not store file', 'error')
+        this.uppy.log('[GoldenRetriever] Could not store file', 'warning')
         this.uppy.log(err)
         this.uppy.log(err)
       })
       })
     })
     })
 
 
     this.uppy.on('file-removed', (fileID) => {
     this.uppy.on('file-removed', (fileID) => {
-      if (this.ServiceWorkerStore) this.ServiceWorkerStore.delete(fileID)
-      this.IndexedDBStore.delete(fileID)
+      if (this.ServiceWorkerStore) {
+        this.ServiceWorkerStore.delete(fileID).catch((err) => {
+          this.uppy.log('[GoldenRetriever] Failed to remove file', 'warning')
+          this.uppy.log(err)
+        })
+      }
+      this.IndexedDBStore.delete(fileID).catch((err) => {
+        this.uppy.log('[GoldenRetriever] Failed to remove file', 'warning')
+        this.uppy.log(err)
+      })
     })
     })
 
 
     this.uppy.on('complete', ({ successful }) => {
     this.uppy.on('complete', ({ successful }) => {
       const fileIDs = successful.map((file) => file.id)
       const fileIDs = successful.map((file) => file.id)
       this.deleteBlobs(fileIDs).then(() => {
       this.deleteBlobs(fileIDs).then(() => {
         this.uppy.log(`[GoldenRetriever] Removed ${successful.length} files that finished uploading`)
         this.uppy.log(`[GoldenRetriever] Removed ${successful.length} files that finished uploading`)
+      }).catch((err) => {
+        this.uppy.log(`[GoldenRetriever] Could not remove ${successful.length} files that finished uploading`, 'warning')
+        this.uppy.log(err)
       })
       })
     })
     })
 
 

+ 9 - 6
src/plugins/Tus.js

@@ -203,6 +203,13 @@ module.exports = class Tus extends Plugin {
   uploadRemote (file, current, total) {
   uploadRemote (file, current, total) {
     this.resetUploaderReferences(file.id)
     this.resetUploaderReferences(file.id)
 
 
+    const opts = Object.assign(
+      {},
+      this.opts,
+      // Install file-specific upload overrides.
+      file.tus || {}
+    )
+
     return new Promise((resolve, reject) => {
     return new Promise((resolve, reject) => {
       this.uppy.log(file.remote.url)
       this.uppy.log(file.remote.url)
       if (file.serverToken) {
       if (file.serverToken) {
@@ -211,11 +218,6 @@ module.exports = class Tus extends Plugin {
           .catch(reject)
           .catch(reject)
       }
       }
 
 
-      let endpoint = this.opts.endpoint
-      if (file.tus && file.tus.endpoint) {
-        endpoint = file.tus.endpoint
-      }
-
       this.uppy.emit('upload-started', file.id)
       this.uppy.emit('upload-started', file.id)
 
 
       fetch(file.remote.url, {
       fetch(file.remote.url, {
@@ -226,7 +228,8 @@ module.exports = class Tus extends Plugin {
           'Content-Type': 'application/json'
           'Content-Type': 'application/json'
         },
         },
         body: JSON.stringify(Object.assign({}, file.remote.body, {
         body: JSON.stringify(Object.assign({}, file.remote.body, {
-          endpoint,
+          endpoint: opts.endpoint,
+          uploadUrl: opts.uploadUrl,
           protocol: 'tus',
           protocol: 'tus',
           size: file.data.size,
           size: file.data.size,
           metadata: file.meta
           metadata: file.meta