Reduce client code for uploads

pull/6788/head
Rodrigo Nascimento 9 years ago
parent a8519bafb9
commit 5ba6e00b29
  1. 47
      packages/rocketchat-file-upload/client/lib/FileUploadAmazonS3.js
  2. 43
      packages/rocketchat-file-upload/client/lib/FileUploadFileSystem.js
  3. 47
      packages/rocketchat-file-upload/client/lib/FileUploadGoogleStorage.js
  4. 35
      packages/rocketchat-file-upload/client/lib/FileUploadGridFS.js
  5. 10
      packages/rocketchat-file-upload/client/lib/fileUploadHandler.js
  6. 32
      packages/rocketchat-file-upload/lib/FileUploadBase.js
  7. 2
      packages/rocketchat-ui-account/client/avatar/prompt.js
  8. 2
      packages/rocketchat-ui/client/lib/fileUpload.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();
}
};

@ -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();
}
};

@ -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();
}
};

@ -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();
}
};

@ -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);
}
};

@ -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();
}
};

@ -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

@ -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({

Loading…
Cancel
Save