diff --git a/packages/rocketchat-ui/client/lib/fileUpload.coffee b/packages/rocketchat-ui/client/lib/fileUpload.coffee index 3eb4e7a448f8..55507fe06189 100644 --- a/packages/rocketchat-ui/client/lib/fileUpload.coffee +++ b/packages/rocketchat-ui/client/lib/fileUpload.coffee @@ -5,6 +5,39 @@ readAsDataURL = (file, callback) -> reader.readAsDataURL file +getUploadPreview = (file, callback) -> + # If greater then 10MB don't try and show a preview + if file.file.size > 10 * 1000000 + callback(file, null) + else + if file.file.type.indexOf('audio') > -1 or file.file.type.indexOf('video') > -1 or file.file.type.indexOf('image') > -1 + file.type = file.file.type.split('/')[0] + + readAsDataURL file.file, (content) -> + callback(file, content) + else + callback(file, null) + +formatBytes = (bytes, decimals) -> + if bytes == 0 + return '0 Bytes' + + k = 1000 + dm = decimals + 1 or 3 + + sizes = [ + 'Bytes' + 'KB' + 'MB' + 'GB' + 'TB' + 'PB' + ] + + i = Math.floor(Math.log(bytes) / Math.log(k)) + + parseFloat((bytes / k ** i).toFixed(dm)) + ' ' + sizes[i] + readAsArrayBuffer = (file, callback) -> reader = new FileReader() reader.onload = (ev) -> @@ -23,29 +56,29 @@ readAsArrayBuffer = (file, callback) -> swal.close() return - readAsDataURL file.file, (fileContent) -> - if not RocketChat.fileUploadIsValidContentType file.file.type - swal - title: t('FileUpload_MediaType_NotAccepted') - text: file.file.type || "*.#{s.strRightBack(file.file.name, '.')}" - type: 'error' - timer: 3000 - return - - if file.file.size is 0 - swal - title: t('FileUpload_File_Empty') - type: 'error' - timer: 1000 - return + if not RocketChat.fileUploadIsValidContentType file.file.type + swal + title: t('FileUpload_MediaType_NotAccepted') + text: file.file.type || "*.#{s.strRightBack(file.file.name, '.')}" + type: 'error' + timer: 3000 + return + + if file.file.size is 0 + swal + title: t('FileUpload_File_Empty') + type: 'error' + timer: 1000 + return + getUploadPreview file, (file, preview) -> text = '' if file.type is 'audio' text = """
@@ -58,7 +91,7 @@ readAsArrayBuffer = (file, callback) -> text = """
@@ -67,10 +100,22 @@ readAsArrayBuffer = (file, callback) -> """ + else if file.type is 'image' + text = """ +
+
+
+
+ + +
+ """ else + fileSize = formatBytes(file.file.size) + text = """
-
+
#{Handlebars._escape(file.name)} - #{fileSize}