diff --git a/packages/rocketchat-file-upload/.npm/package/npm-shrinkwrap.json b/packages/rocketchat-file-upload/.npm/package/npm-shrinkwrap.json index 3accf2dba6e3799c744b496c4ff9cfd8daefc9a3..62e1770f2f683ceef5a60343fedd40569ba92572 100644 --- a/packages/rocketchat-file-upload/.npm/package/npm-shrinkwrap.json +++ b/packages/rocketchat-file-upload/.npm/package/npm-shrinkwrap.json @@ -1,16 +1,19 @@ { "dependencies": { + "filesize": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.3.0.tgz", + "from": "filesize@3.3.0" + }, + "mime-db": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "from": "mime-db@>=1.23.0 <1.24.0" + }, "mime-types": { "version": "2.1.11", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "from": "mime-types@2.1.11", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "from": "mime-db@1.23.0" - } - } + "from": "mime-types@2.1.11" } } } diff --git a/packages/rocketchat-file-upload/client/lib/FileUploadFileSystem.js b/packages/rocketchat-file-upload/client/lib/FileUploadFileSystem.js index f42522813fef462bebcfdc245f5ad672bd74da65..b18528c037ec5094d5ce09b26fbf963a13dd745b 100644 --- a/packages/rocketchat-file-upload/client/lib/FileUploadFileSystem.js +++ b/packages/rocketchat-file-upload/client/lib/FileUploadFileSystem.js @@ -53,6 +53,14 @@ FileUpload.FileSystem = class FileUploadFileSystem extends FileUploadBase { } start() { + const uploading = Session.get('uploading') || []; + const item = { + id: this.id, + name: this.getFileName(), + percentage: 0, + }; + uploading.push(item); + Session.set('uploading', uploading); return this.handler.start(); } diff --git a/packages/rocketchat-file-upload/client/lib/FileUploadGridFS.js b/packages/rocketchat-file-upload/client/lib/FileUploadGridFS.js index 29ede7019433b96a1043cf0f95a60fe8020b3215..b0f68a5eee2eae01468ba5aa7479723aa70601f0 100644 --- a/packages/rocketchat-file-upload/client/lib/FileUploadGridFS.js +++ b/packages/rocketchat-file-upload/client/lib/FileUploadGridFS.js @@ -44,6 +44,14 @@ FileUpload.GridFS = class FileUploadGridFS extends FileUploadBase { } start() { + const uploading = Session.get('uploading') || []; + const item = { + id: this.id, + name: this.getFileName(), + percentage: 0, + }; + uploading.push(item); + Session.set('uploading', uploading); return this.handler.start(); } diff --git a/packages/rocketchat-file-upload/globalFileRestrictions.js b/packages/rocketchat-file-upload/globalFileRestrictions.js index 737e61a1e9c5e7c52a160bc0163ec9d1d6e86f05..aa13684a514eaebd1aba570ae0fb7dfe757d6f7a 100644 --- a/packages/rocketchat-file-upload/globalFileRestrictions.js +++ b/packages/rocketchat-file-upload/globalFileRestrictions.js @@ -1,5 +1,7 @@ /* globals Slingshot */ +import filesize from 'filesize'; + Slingshot.fileRestrictions('rocketchat-uploads', { authorize: function(file/*, metaContext*/) { if (!RocketChat.fileUploadIsValidContentType(file.type)) { @@ -9,7 +11,7 @@ Slingshot.fileRestrictions('rocketchat-uploads', { var maxFileSize = RocketChat.settings.get('FileUpload_MaxFileSize'); if (maxFileSize && maxFileSize < file.size) { - throw new Meteor.Error(TAPi18n.__('File_exceeds_allowed_size_of_bytes', { size: maxFileSize })); + throw new Meteor.Error(TAPi18n.__('File_exceeds_allowed_size_of_bytes', { size: filesize(maxFileSize) })); } //Deny uploads if user is not logged in. diff --git a/packages/rocketchat-file-upload/lib/FileUpload.js b/packages/rocketchat-file-upload/lib/FileUpload.js index ad60d50112bf1481541c160e97a2c2e9058bc859..c5fb1a87a6becdeafbf9165327e786307a830816 100644 --- a/packages/rocketchat-file-upload/lib/FileUpload.js +++ b/packages/rocketchat-file-upload/lib/FileUpload.js @@ -1,16 +1,24 @@ /* globals FileUpload:true */ /* exported FileUpload */ -var maxFileSize = 0; +import filesize from 'filesize'; + +let maxFileSize = 0; FileUpload = { validateFileUpload(file) { if (file.size > maxFileSize) { - throw new Meteor.Error('error-file-too-large', 'File is too large'); + const user = Meteor.user(); + const reason = TAPi18n.__('File_exceeds_allowed_size_of_bytes', { + size: filesize(maxFileSize), + }, user.language); + throw new Meteor.Error('error-file-too-large', reason); } if (!RocketChat.fileUploadIsValidContentType(file.type)) { - throw new Meteor.Error('error-invalid-file-type', 'File type is not accepted'); + const user = Meteor.user(); + const reason = TAPi18n.__('File_type_is_not_accepted', user.language); + throw new Meteor.Error('error-invalid-file-type', reason); } return true; diff --git a/packages/rocketchat-file-upload/package.js b/packages/rocketchat-file-upload/package.js index 5bd5f0a6d8870a90837fce38dc11470ac4aaed69..cb80a8a7cbf3f33e13633e604c8b15117463d02f 100644 --- a/packages/rocketchat-file-upload/package.js +++ b/packages/rocketchat-file-upload/package.js @@ -47,5 +47,6 @@ Package.onUse(function(api) { }); Npm.depends({ - 'mime-types': '2.1.11' + 'mime-types': '2.1.11', + 'filesize': '3.3.0', }); diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 4ab277ca795d4e86d866484b10acd2742a6d9595..f82c05aa79972e46511eeaf3077bc5ac6a848a57 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -452,7 +452,8 @@ "Field" : "Field", "Field_removed" : "Field removed", "Field_required" : "Field required", - "File_exceeds_allowed_size_of_bytes" : "File exceeds allowed size of __size__ bytes", + "File_exceeds_allowed_size_of_bytes" : "File exceeds allowed size of __size__.", + "File_type_is_not_accepted": "File type is not accepted.", "FileUpload" : "File Upload", "FileUpload_Enabled" : "File Uploads Enabled", "FileUpload_File_Empty" : "File empty", diff --git a/packages/rocketchat-i18n/i18n/ja.i18n.json b/packages/rocketchat-i18n/i18n/ja.i18n.json index 20edc9b6e6126f371b72cfff1536b678940ee06e..6d16d1dd65edfbed864e9fbbce57cf7187701e7c 100644 --- a/packages/rocketchat-i18n/i18n/ja.i18n.json +++ b/packages/rocketchat-i18n/i18n/ja.i18n.json @@ -412,7 +412,8 @@ "Features_Enabled" : "æœ‰åŠ¹ãªæ©Ÿèƒ½", "Field" : "フィールド", "Field_removed" : "フィールド削除", - "File_exceeds_allowed_size_of_bytes" : "ファイルãŒè¨±å¯ã•れã¦ã„るサイズ __size__ ãƒã‚¤ãƒˆã‚’è¶…éŽã—ã¦ã„ã¾ã™ã€‚", + "File_exceeds_allowed_size_of_bytes" : "ファイルãŒè¨±å¯ã•れã¦ã„るサイズ __size__ ã‚’è¶…éŽã—ã¦ã„ã¾ã™ã€‚", + "File_type_is_not_accepted": "許å¯ã•れã¦ã„ãªã„ファイルタイプã§ã™ã€‚", "FileUpload" : "ファイルアップãƒãƒ¼ãƒ‰", "FileUpload_Enabled" : "ファイルアップãƒãƒ¼ãƒ‰ã‚’有効ã«ã™ã‚‹", "FileUpload_File_Empty" : "ファイルãŒç©ºã§ã™",