From 9f4e412762dbdfc1fa58da3c71b5bdb47e343c33 Mon Sep 17 00:00:00 2001 From: Artur Paikin Date: Tue, 8 Mar 2016 09:08:23 -0500 Subject: [PATCH] Turn Tus upload into a proper promise --- src/plugins/Tus10.js | 66 ++++++++++++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/src/plugins/Tus10.js b/src/plugins/Tus10.js index 746d15fad..4b4b93f6b 100644 --- a/src/plugins/Tus10.js +++ b/src/plugins/Tus10.js @@ -35,29 +35,53 @@ export default class Tus10 extends Plugin { }) // Create a new tus upload - const upload = new tus.Upload(file, { - endpoint: this.opts.endpoint, - onError: error => { - return Promise.reject('Failed because: ' + error) - }, - onProgress: (bytesUploaded, bytesTotal) => { - let percentage = (bytesUploaded / bytesTotal * 100).toFixed(2) - percentage = Math.round(percentage) - // self.setProgress(percentage, current, total) + return new Promise((resolve, reject) => { + const upload = new tus.Upload(file, { + endpoint: this.opts.endpoint, + onError: error => { + reject('Failed because: ' + error) + }, + onProgress: (bytesUploaded, bytesTotal) => { + let percentage = (bytesUploaded / bytesTotal * 100).toFixed(2) + percentage = Math.round(percentage) - // Dispatch progress event - this.core.emitter.emit('progress', { - plugin: this, - percentage: percentage - }) - }, - onSuccess: () => { - this.core.log(`Download ${upload.file.name} from ${upload.url}`) - return Promise.resolve(upload) - } + // Dispatch progress event + this.core.emitter.emit('progress', { + plugin: this, + percentage: percentage + }) + }, + onSuccess: () => { + this.core.log(`Download ${upload.file.name} from ${upload.url}`) + resolve(upload) + } + }) + upload.start() }) - // Start the upload - return upload.start() + + // const upload = new tus.Upload(file, { + // endpoint: this.opts.endpoint, + // onError: error => { + // return Promise.reject('Failed because: ' + error) + // }, + // onProgress: (bytesUploaded, bytesTotal) => { + // let percentage = (bytesUploaded / bytesTotal * 100).toFixed(2) + // percentage = Math.round(percentage) + // // self.setProgress(percentage, current, total) + // + // // Dispatch progress event + // this.core.emitter.emit('progress', { + // plugin: this, + // percentage: percentage + // }) + // }, + // onSuccess: () => { + // this.core.log(`Download ${upload.file.name} from ${upload.url}`) + // return Promise.resolve(upload) + // } + // }) + // // Start the upload + // return upload.start() } /**