diff --git a/packages/rocketchat-file-upload/client/lib/FileUploadAmazonS3.js b/packages/rocketchat-file-upload/client/lib/FileUploadAmazonS3.js index ed58adafa34..3c346703ab6 100644 --- a/packages/rocketchat-file-upload/client/lib/FileUploadAmazonS3.js +++ b/packages/rocketchat-file-upload/client/lib/FileUploadAmazonS3.js @@ -1,56 +1,19 @@ -/* globals FileUpload, FileUploadBase, UploadFS, AmazonS3ServerStore:true, AmazonS3ServerStoreAvatar:true */ +/* globals FileUpload, UploadFS */ import '../../ufs/AmazonS3/client.js'; -AmazonS3ServerStore = new UploadFS.store.AmazonS3({ +new UploadFS.store.AmazonS3({ collection: RocketChat.models.Uploads.model, - name: 'AmazonS3Server:Uploads', + name: 'AmazonS3:Uploads', filter: new UploadFS.Filter({ onCheck: FileUpload.validateFileUpload }) }); -AmazonS3ServerStoreAvatar = new UploadFS.store.AmazonS3({ +new UploadFS.store.AmazonS3({ collection: RocketChat.models.Avatars.model, - name: 'AmazonS3Server:Avatars', + name: 'AmazonS3:Avatars', filter: new UploadFS.Filter({ onCheck: FileUpload.validateFileUpload }) }); - -FileUpload.AmazonS3Server = class FileUploadAmazonS3Server extends FileUploadBase { - constructor(directive, meta, file) { - super(meta, file); - console.log('AmazonS3Server', {directive, meta, file}); - this.store = directive === 'avatar' ? AmazonS3ServerStoreAvatar : AmazonS3ServerStore; - } - - start(callback) { - this.handler = new UploadFS.Uploader({ - store: this.store, - data: this.file, - file: this.meta, - onError: (err) => { - return callback(err); - }, - onComplete: (fileData) => { - const file = _.pick(fileData, '_id', 'type', 'size', 'name', 'identify', 'description'); - - file.url = fileData.url.replace(Meteor.absoluteUrl(), '/'); - return callback(null, file, 'fs'); - } - }); - - this.handler.onProgress = (file, progress) => { - this.onProgress(progress); - }; - - return this.handler.start(); - } - - onProgress() {} - - stop() { - return this.handler.stop(); - } -}; diff --git a/packages/rocketchat-file-upload/client/lib/FileUploadFileSystem.js b/packages/rocketchat-file-upload/client/lib/FileUploadFileSystem.js index 10bb44cf74f..a4777194f90 100644 --- a/packages/rocketchat-file-upload/client/lib/FileUploadFileSystem.js +++ b/packages/rocketchat-file-upload/client/lib/FileUploadFileSystem.js @@ -1,6 +1,6 @@ -/* globals FileUploadBase, UploadFS, FileUpload:true, FileSystemStore:true, FileSystemStoreAvatar:true */ +/* globals UploadFS, FileUpload:true */ -FileSystemStore = new UploadFS.store.Local({ +new UploadFS.store.Local({ collection: RocketChat.models.Uploads.model, name: 'FileSystem:Uploads', filter: new UploadFS.Filter({ @@ -8,47 +8,10 @@ FileSystemStore = new UploadFS.store.Local({ }) }); -FileSystemStoreAvatar = new UploadFS.store.Local({ +new UploadFS.store.Local({ collection: RocketChat.models.Avatars.model, name: 'FileSystem:Avatars', filter: new UploadFS.Filter({ onCheck: FileUpload.validateFileUpload }) }); - -FileUpload.FileSystem = class FileUploadFileSystem extends FileUploadBase { - constructor(directive, meta, file) { - super(meta, file); - console.log('filesystem', {directive, meta, file}); - this.store = directive === 'avatar' ? FileSystemStoreAvatar : FileSystemStore; - } - - start(callback) { - this.handler = new UploadFS.Uploader({ - store: this.store, - data: this.file, - file: this.meta, - onError: (err) => { - return callback(err); - }, - onComplete: (fileData) => { - const file = _.pick(fileData, '_id', 'type', 'size', 'name', 'identify', 'description'); - - file.url = fileData.url.replace(Meteor.absoluteUrl(), '/'); - return callback(null, file, 'fs'); - } - }); - - this.handler.onProgress = (file, progress) => { - this.onProgress(progress); - }; - - return this.handler.start(); - } - - onProgress() {} - - stop() { - return this.handler.stop(); - } -}; diff --git a/packages/rocketchat-file-upload/client/lib/FileUploadGoogleStorage.js b/packages/rocketchat-file-upload/client/lib/FileUploadGoogleStorage.js index 9e64169382b..f4c398d4eb2 100644 --- a/packages/rocketchat-file-upload/client/lib/FileUploadGoogleStorage.js +++ b/packages/rocketchat-file-upload/client/lib/FileUploadGoogleStorage.js @@ -1,56 +1,19 @@ -/* globals FileUpload, FileUploadBase, UploadFS, GoogleCloudStorageServerStore:true, GoogleCloudStorageServerStoreAvatar:true */ +/* globals FileUpload, UploadFS */ import '../../ufs/GoogleStorage/client.js'; -GoogleCloudStorageServerStore = new UploadFS.store.GoogleStorage({ +new UploadFS.store.GoogleStorage({ collection: RocketChat.models.Uploads.model, - name: 'GoogleCloudStorageServer:Uploads', + name: 'GoogleCloudStorage:Uploads', filter: new UploadFS.Filter({ onCheck: FileUpload.validateFileUpload }) }); -GoogleCloudStorageServerStoreAvatar = new UploadFS.store.GoogleStorage({ +new UploadFS.store.GoogleStorage({ collection: RocketChat.models.Avatars.model, - name: 'GoogleCloudStorageServer:Avatars', + name: 'GoogleCloudStorage:Avatars', filter: new UploadFS.Filter({ onCheck: FileUpload.validateFileUpload }) }); - -FileUpload.GoogleCloudStorageServer = class FileUploadGoogleCloudStorageServer extends FileUploadBase { - constructor(directive, meta, file) { - super(meta, file); - console.log('GoogleCloudStorageServer', {directive, meta, file}); - this.store = directive === 'avatar' ? GoogleCloudStorageServerStoreAvatar : GoogleCloudStorageServerStore; - } - - start(callback) { - this.handler = new UploadFS.Uploader({ - store: this.store, - data: this.file, - file: this.meta, - onError: (err) => { - return callback(err); - }, - onComplete: (fileData) => { - const file = _.pick(fileData, '_id', 'type', 'size', 'name', 'identify', 'description'); - - file.url = fileData.url.replace(Meteor.absoluteUrl(), '/'); - return callback(null, file, 'fs'); - } - }); - - this.handler.onProgress = (file, progress) => { - this.onProgress(progress); - }; - - return this.handler.start(); - } - - onProgress() {} - - stop() { - return this.handler.stop(); - } -}; diff --git a/packages/rocketchat-file-upload/client/lib/FileUploadGridFS.js b/packages/rocketchat-file-upload/client/lib/FileUploadGridFS.js index 6b8c3755b99..e69de29bb2d 100644 --- a/packages/rocketchat-file-upload/client/lib/FileUploadGridFS.js +++ b/packages/rocketchat-file-upload/client/lib/FileUploadGridFS.js @@ -1,35 +0,0 @@ -/* globals FileUploadBase, UploadFS, FileUpload:true */ -FileUpload.GridFS = class FileUploadGridFS extends FileUploadBase { - constructor(directive, meta, file) { - super(meta, file); - this.store = directive === 'avatar' ? Meteor.fileStoreAvatar : Meteor.fileStore; - } - - start(callback) { - this.handler = new UploadFS.Uploader({ - store: this.store, - data: this.file, - file: this.meta, - onError: (err) => { - return callback(err); - }, - onComplete: (fileData) => { - const file = _.pick(fileData, '_id', 'type', 'size', 'name', 'identify', 'description'); - file.url = fileData.url.replace(Meteor.absoluteUrl(), '/'); - return callback(null, file, 'gridfs'); - } - }); - - this.handler.onProgress = (file, progress) => { - this.onProgress(progress); - }; - - return this.handler.start(); - } - - onProgress() {} - - stop() { - return this.handler.stop(); - } -}; diff --git a/packages/rocketchat-file-upload/client/lib/fileUploadHandler.js b/packages/rocketchat-file-upload/client/lib/fileUploadHandler.js index f62e4bb5b93..babd65d0c2f 100644 --- a/packages/rocketchat-file-upload/client/lib/fileUploadHandler.js +++ b/packages/rocketchat-file-upload/client/lib/fileUploadHandler.js @@ -1,10 +1,14 @@ -/* globals FileUpload, fileUploadHandler:true */ +/* globals FileUploadBase, UploadFS, fileUploadHandler:true */ /* exported fileUploadHandler */ fileUploadHandler = (directive, meta, file) => { const storageType = RocketChat.settings.get('FileUpload_Storage_Type'); - if (FileUpload[storageType] !== undefined) { - return new FileUpload[storageType](directive, meta, file); + const storeName = `${ storageType }:${ directive }`; + + const store = UploadFS.getStore(storeName); + + if (store) { + return new FileUploadBase(store, meta, file); } }; diff --git a/packages/rocketchat-file-upload/lib/FileUploadBase.js b/packages/rocketchat-file-upload/lib/FileUploadBase.js index 24a304cf288..29b6d403444 100644 --- a/packages/rocketchat-file-upload/lib/FileUploadBase.js +++ b/packages/rocketchat-file-upload/lib/FileUploadBase.js @@ -15,10 +15,13 @@ UploadFS.config.defaultStorePermissions = new UploadFS.StorePermissions({ FileUploadBase = class FileUploadBase { - constructor(meta, file) { + constructor(store, meta, file) { this.id = Random.id(); this.meta = meta; this.file = file; + + console.log(store.options.name, {meta, file}); + this.store = store; } getProgress() { @@ -29,11 +32,32 @@ FileUploadBase = class FileUploadBase { return this.meta.name; } - start() { - + start(callback) { + this.handler = new UploadFS.Uploader({ + store: this.store, + data: this.file, + file: this.meta, + onError: (err) => { + return callback(err); + }, + onComplete: (fileData) => { + const file = _.pick(fileData, '_id', 'type', 'size', 'name', 'identify', 'description'); + + file.url = fileData.url.replace(Meteor.absoluteUrl(), '/'); + return callback(null, file, this.store.options.name); + } + }); + + this.handler.onProgress = (file, progress) => { + this.onProgress(progress); + }; + + return this.handler.start(); } - stop() { + onProgress() {} + stop() { + return this.handler.stop(); } }; diff --git a/packages/rocketchat-ui-account/client/avatar/prompt.js b/packages/rocketchat-ui-account/client/avatar/prompt.js index 67d98689077..6875d1d2979 100644 --- a/packages/rocketchat-ui-account/client/avatar/prompt.js +++ b/packages/rocketchat-ui-account/client/avatar/prompt.js @@ -96,7 +96,7 @@ Template.avatarPrompt.events({ // description: document.getElementById('file-description').value }; - const upload = fileUploadHandler('avatar', record, files[0]); + const upload = fileUploadHandler('Avatars', record, files[0]); // upload.onProgress = (progress) -> // console.log 'progress ->', progress diff --git a/packages/rocketchat-ui/client/lib/fileUpload.js b/packages/rocketchat-ui/client/lib/fileUpload.js index b928171c34b..9c20385e302 100644 --- a/packages/rocketchat-ui/client/lib/fileUpload.js +++ b/packages/rocketchat-ui/client/lib/fileUpload.js @@ -147,7 +147,7 @@ fileUpload = function(filesToUpload) { description: document.getElementById('file-description').value }; - const upload = fileUploadHandler('upload', record, file.file); + const upload = fileUploadHandler('Uploads', record, file.file); let uploading = Session.get('uploading') || []; uploading.push({