From 5476be817362cf04083b4d061d5ff84506a16d7a Mon Sep 17 00:00:00 2001 From: Youssef Lourayad Date: Tue, 16 May 2023 18:58:46 +0100 Subject: [PATCH] Merge pull request #18521 from Expensify/youssef_allow_all_filetypes_upload Allow all filetypes to be uploaded (cherry picked from commit d34ed346b1854ba311c7181d26e29310b2a9e648) --- src/CONST.js | 57 ++++++++++++++++++++++++++++++- src/components/AttachmentModal.js | 4 +-- src/languages/en.js | 2 +- src/languages/es.js | 2 +- 4 files changed, 60 insertions(+), 5 deletions(-) diff --git a/src/CONST.js b/src/CONST.js index e1335306d47a..379d3537dc3a 100755 --- a/src/CONST.js +++ b/src/CONST.js @@ -35,7 +35,62 @@ const CONST = { API_ATTACHMENT_VALIDATIONS: { // Same as the PHP layer allows - ALLOWED_EXTENSIONS: ['webp', 'jpg', 'jpeg', 'png', 'gif', 'pdf', 'html', 'txt', 'rtf', 'doc', 'docx', 'htm', 'tiff', 'tif', 'xml', 'mp3', 'mp4', 'mov'], + /* eslint-disable-next-line max-len */ + UNALLOWED_EXTENSIONS: [ + 'ade', + 'adp', + 'apk', + 'appx', + 'appxbundle', + 'bat', + 'cab', + 'chm', + 'cmd', + 'com', + 'cpl', + 'diagcab', + 'diagcfg', + 'diagpack', + 'dll', + 'dmg', + 'ex', + 'ex_', + 'exe', + 'hta', + 'img', + 'ins', + 'iso', + 'isp', + 'jar', + 'jnlp', + 'js', + 'jse', + 'lib', + 'lnk', + 'mde', + 'msc', + 'msi', + 'msix', + 'msixbundle', + 'msp', + 'mst', + 'nsh', + 'pif', + 'ps1', + 'scr', + 'sct', + 'shb', + 'sys', + 'vb', + 'vbe', + 'vbs', + 'vhd', + 'vxd', + 'wsc', + 'wsf', + 'wsh', + 'xll', + ], // 24 megabytes in bytes, this is limit set on servers, do not update without wider internal discussion MAX_SIZE: 25165824, diff --git a/src/components/AttachmentModal.js b/src/components/AttachmentModal.js index ed40878285a3..ea5f5baa1558 100755 --- a/src/components/AttachmentModal.js +++ b/src/components/AttachmentModal.js @@ -167,8 +167,8 @@ class AttachmentModal extends PureComponent { */ isValidFile(file) { const {fileExtension} = FileUtils.splitExtensionFromFileName(lodashGet(file, 'name', '')); - if (!_.contains(CONST.API_ATTACHMENT_VALIDATIONS.ALLOWED_EXTENSIONS, fileExtension.toLowerCase())) { - const invalidReason = `${this.props.translate('attachmentPicker.notAllowedExtension')} ${CONST.API_ATTACHMENT_VALIDATIONS.ALLOWED_EXTENSIONS.join(', ')}`; + if (_.contains(CONST.API_ATTACHMENT_VALIDATIONS.UNALLOWED_EXTENSIONS, fileExtension.toLowerCase())) { + const invalidReason = this.props.translate('attachmentPicker.notAllowedExtension'); this.setState({ isAttachmentInvalid: true, attachmentInvalidReasonTitle: this.props.translate('attachmentPicker.wrongFileType'), diff --git a/src/languages/en.js b/src/languages/en.js index f9d9eaf23826..55b63f497a26 100755 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -151,7 +151,7 @@ export default { attachmentTooSmall: 'Attachment too small', sizeNotMet: 'Attachment size must be greater than 240 bytes.', wrongFileType: 'Attachment is the wrong type', - notAllowedExtension: 'Attachments must be one of the following types:', + notAllowedExtension: 'This filetype is not allowed', }, avatarCropModal: { title: 'Edit photo', diff --git a/src/languages/es.js b/src/languages/es.js index 23114b5bc428..28bc0cf33c53 100644 --- a/src/languages/es.js +++ b/src/languages/es.js @@ -150,7 +150,7 @@ export default { attachmentTooSmall: 'Archivo adjunto demasiado pequeño', sizeNotMet: 'El archivo adjunto debe ser mas grande que 240 bytes.', wrongFileType: 'El tipo del archivo adjunto es incorrecto', - notAllowedExtension: 'Los archivos adjuntos deben ser de uno de los siguientes tipos:', + notAllowedExtension: 'Este tipo de archivo no está permitido', }, avatarCropModal: { title: 'Editar foto',