From 7450afeecffee2f4c4691898d0408a974c82bc40 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Tue, 19 Mar 2024 15:24:34 +0100 Subject: [PATCH] Replace all `new Intl.Collator` with new baseCollator --- dev/Common/Folders.js | 3 ++- dev/Common/Translator.js | 5 +++-- dev/Model/AttachmentCollection.js | 3 ++- dev/Stores/User/GnuPG.js | 4 +++- dev/Stores/User/OpenPGP.js | 4 +++- dev/Stores/User/SMime.js | 3 ++- dev/View/Popup/FolderCreate.js | 4 ++-- 7 files changed, 17 insertions(+), 9 deletions(-) diff --git a/dev/Common/Folders.js b/dev/Common/Folders.js index cbba0390d..e7d42e2c7 100644 --- a/dev/Common/Folders.js +++ b/dev/Common/Folders.js @@ -1,5 +1,6 @@ import { RFC822 } from 'Common/File'; import { getFolderInboxName, getFolderFromCacheList } from 'Common/Cache'; +import { baseCollator } from 'Common/Translator'; import { isArray, arrayLength } from 'Common/Utils'; import { SettingsUserStore } from 'Stores/User/Settings'; import { FolderUserStore } from 'Stores/User/Folder'; @@ -27,7 +28,7 @@ setRefreshFoldersInterval = minutes => { sortFolders = folders => { try { - let collator = new Intl.Collator(undefined, {numeric: true, sensitivity: 'base'}); + let collator = baseCollator(true); folders.sort((a, b) => a.isInbox() ? -1 : (b.isInbox() ? 1 : collator.compare(a.fullName, b.fullName)) ); diff --git a/dev/Common/Translator.js b/dev/Common/Translator.js index 4d1111a64..ca5cb130d 100644 --- a/dev/Common/Translator.js +++ b/dev/Common/Translator.js @@ -218,7 +218,6 @@ export const }), /** - * * @param {string} language * @param {boolean=} isEng = false * @returns {string} @@ -228,6 +227,8 @@ export const 'LANGS_NAMES' + (true === isEng ? '_EN' : '') + '/' + language, null, language - ); + ), + + baseCollator = numeric => new Intl.Collator(doc.documentElement.lang, {numeric: !!numeric, sensitivity: 'base'}); init(); diff --git a/dev/Model/AttachmentCollection.js b/dev/Model/AttachmentCollection.js index 4715d219d..016110efe 100644 --- a/dev/Model/AttachmentCollection.js +++ b/dev/Model/AttachmentCollection.js @@ -1,3 +1,4 @@ +import { baseCollator } from 'Common/Translator'; import { AbstractCollectionModel } from 'Model/AbstractCollection'; import { AttachmentModel } from 'Model/Attachment'; @@ -11,7 +12,7 @@ export class AttachmentCollectionModel extends AbstractCollectionModel */ static reviveFromJson(items) { const attachments = super.reviveFromJson(items, attachment => AttachmentModel.reviveFromJson(attachment)); - let collator = new Intl.Collator(undefined, {numeric: true, sensitivity: 'base'}); + let collator = baseCollator(true); attachments.sort((a, b) => { if (a.isInline()) { if (!b.isInline()) { diff --git a/dev/Stores/User/GnuPG.js b/dev/Stores/User/GnuPG.js index 8e8c853e2..6674b6a49 100644 --- a/dev/Stores/User/GnuPG.js +++ b/dev/Stores/User/GnuPG.js @@ -12,6 +12,8 @@ import { OpenPgpKeyPopupView } from 'View/Popup/OpenPgpKey'; import { Passphrases } from 'Storage/Passphrases'; +import { baseCollator } from 'Common/Translator'; + const findGnuPGKey = (keys, query/*, sign*/) => keys.find(key => @@ -106,7 +108,7 @@ export const GnuPGUserStore = new class { key.view = () => key.fetch(() => showScreenPopup(OpenPgpKeyPopupView, [key])); return key; }, - collator = new Intl.Collator(undefined, {sensitivity: 'base'}), + collator = baseCollator(), sort = keys => keys.sort( (a, b) => collator.compare(a.emails[0], b.emails[0]) || collator.compare(a.id, b.id) ); diff --git a/dev/Stores/User/OpenPGP.js b/dev/Stores/User/OpenPGP.js index db6664286..b3914e9c6 100644 --- a/dev/Stores/User/OpenPGP.js +++ b/dev/Stores/User/OpenPGP.js @@ -13,6 +13,8 @@ import { OpenPgpKeyPopupView } from 'View/Popup/OpenPgpKey'; import { Passphrases } from 'Storage/Passphrases'; +import { baseCollator } from 'Common/Translator'; + const findOpenPGPKey = (keys, query/*, sign*/) => keys.find(key => @@ -39,7 +41,7 @@ const } }, - collator = new Intl.Collator(undefined, {sensitivity: 'base'}), + collator = baseCollator(), sort = keys => keys.sort( // (a, b) => collator.compare(a.emails[0], b.emails[0]) || collator.compare(a.fingerprint, b.fingerprint) (a, b) => collator.compare(a.emails[0], b.emails[0]) || collator.compare(a.id, b.id) diff --git a/dev/Stores/User/SMime.js b/dev/Stores/User/SMime.js index 70fa2043c..2bd4f91c8 100644 --- a/dev/Stores/User/SMime.js +++ b/dev/Stores/User/SMime.js @@ -1,4 +1,5 @@ import { addObservablesTo, koArrayWithDestroy } from 'External/ko'; +import { baseCollator } from 'Common/Translator'; import Remote from 'Remote/User/Fetch'; export const SMimeUserStore = koArrayWithDestroy(); @@ -12,7 +13,7 @@ SMimeUserStore.loadCertificates = () => { SMimeUserStore.loading(true); Remote.request('SMimeGetCertificates', (iError, oData) => { SMimeUserStore.loading(false); - const collator = new Intl.Collator(undefined, {sensitivity: 'base'}); + const collator = baseCollator(); iError || SMimeUserStore(oData.Result.sort( (a, b) => collator.compare(a.emailAddress, b.emailAddress) || (b.validTo_time_t - a.validTo_time_t) )); diff --git a/dev/View/Popup/FolderCreate.js b/dev/View/Popup/FolderCreate.js index a1cb4e370..0f47b0ca1 100644 --- a/dev/View/Popup/FolderCreate.js +++ b/dev/View/Popup/FolderCreate.js @@ -3,7 +3,7 @@ import { koComputable, addObservablesTo } from 'External/ko'; import { Notifications } from 'Common/Enums'; import { defaultOptionsAfterRender } from 'Common/Utils'; import { folderListOptionsBuilder, sortFolders } from 'Common/Folders'; -import { getNotification } from 'Common/Translator'; +import { getNotification/*, baseCollator*/ } from 'Common/Translator'; import { FolderUserStore } from 'Stores/User/Folder'; @@ -56,7 +56,7 @@ export class FolderCreatePopupView extends AbstractViewPopup { folders.push(subFolder); sortFolders(folders); /* - var collator = new Intl.Collator(undefined, {numeric: true, sensitivity: 'base'}); + var collator = baseCollator(true); console.log((folder ? folder.subFolders : FolderUserStore.folderList).sort(collator.compare)); */ },