diff --git a/package.json b/package.json index 86b946949..de71cab7d 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "react-top-loading-bar": "^2.0.1", "react-virtualized-auto-sizer": "^1.0.2", "react-window": "^1.8.6", + "sanitize-filename": "^1.6.3", "styled-components": "^5.3.5", "workbox-precaching": "^6.1.5", "workbox-recipes": "^6.1.5", diff --git a/src/utils/export/index.ts b/src/utils/export/index.ts index 7b40b2ce1..ff19ca06a 100644 --- a/src/utils/export/index.ts +++ b/src/utils/export/index.ts @@ -7,6 +7,7 @@ import { EnteFile } from 'types/file'; import { Metadata } from 'types/upload'; import { formatDate, splitFilenameAndExtension } from 'utils/file'; import { ENTE_METADATA_FOLDER } from 'constants/export'; +import sanitize from 'sanitize-filename'; export const getExportRecordFileUID = (file: EnteFile) => `${file.id}_${file.collectionID}_${file.updationTime}`; @@ -158,7 +159,7 @@ export const oldSanitizeName = (name: string) => name.replaceAll('/', '_').replaceAll(' ', '_'); export const sanitizeName = (name: string) => - name.replace(/[^a-z0-9.]/gi, '_').toLowerCase(); + sanitize(name, { replacement: '_' }); export const getUniqueCollectionFolderPath = ( dir: string, diff --git a/yarn.lock b/yarn.lock index d8b0a2aab..b250a1ee6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5054,6 +5054,13 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.0, resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sanitize-filename@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" + integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== + dependencies: + truncate-utf8-bytes "^1.0.0" + sax@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" @@ -5564,6 +5571,13 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= +truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" + integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== + dependencies: + utf8-byte-length "^1.0.1" + tryer@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz" @@ -5710,6 +5724,11 @@ use-subscription@1.5.1: dependencies: object-assign "^4.1.1" +utf8-byte-length@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" + integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"