diff --git a/android/app/build.gradle b/android/app/build.gradle index 8b31f4b09ed0..7834d8ae90cd 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -106,8 +106,8 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled rootProject.ext.multiDexEnabled - versionCode 1001031411 - versionName "1.3.14-11" + versionCode 1001031412 + versionName "1.3.14-12" } splits { diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index e45737142e47..fe60c96e7fb5 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 1.3.14.11 + 1.3.14.12 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index 76ad5da36692..84de56479723 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 1.3.14.11 + 1.3.14.12 diff --git a/package-lock.json b/package-lock.json index 109b0910b3ee..274a2685cafd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.3.14-11", + "version": "1.3.14-12", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.3.14-11", + "version": "1.3.14-12", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 93b78b60fe4e..8dfb65d0218c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.3.14-11", + "version": "1.3.14-12", "author": "Expensify, Inc.", "homepage": "https://new.expensify.com", "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.", 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',