The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Rocket.Chat/packages/rocketchat-file-upload/client/lib/FileUploadFileSystem.js

55 lines
1.4 KiB

/* globals FileUploadBase, UploadFS, FileUpload:true, FileSystemStore:true, FileSystemStoreAvatar:true */
FileSystemStore = new UploadFS.store.Local({
collection: RocketChat.models.Uploads.model,
name: 'FileSystem:Uploads',
filter: new UploadFS.Filter({
onCheck: FileUpload.validateFileUpload
})
});
FileSystemStoreAvatar = 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();
}
};