diff --git a/dev/Model/FolderCollection.js b/dev/Model/FolderCollection.js index 52ee731fc..d8d9769b0 100644 --- a/dev/Model/FolderCollection.js +++ b/dev/Model/FolderCollection.js @@ -29,6 +29,8 @@ import { FileInfo } from 'Common/File'; import { FolderPopupView } from 'View/Popup/Folder'; import { showScreenPopup } from 'Knoin/Knoin'; +import { isAllowedKeyword } from 'Stores/User/Folder'; + const // isPosNumeric = value => null != value && /^[0-9]*$/.test(value.toString()), @@ -411,6 +413,8 @@ export class FolderModel extends AbstractModel { canBeSubscribed: () => this.selectable() && !(this.isSystemFolder() | !SettingsUserStore.hideUnsubscribed()), + optionalTags: () => this.permanentFlags.filter(isAllowedKeyword), + /** * Folder is visible when: * - hasVisibleSubfolders() diff --git a/dev/Model/Message.js b/dev/Model/Message.js index ae2f3687e..f03b82b18 100644 --- a/dev/Model/Message.js +++ b/dev/Model/Message.js @@ -8,7 +8,7 @@ import { forEachObjectEntry, b64EncodeJSONSafe } from 'Common/Utils'; import { serverRequestRaw, proxy } from 'Common/Links'; import { addObservablesTo, addComputablesTo } from 'External/ko'; -import { FolderUserStore, isAllowedKeyword } from 'Stores/User/Folder'; +import { FolderUserStore } from 'Stores/User/Folder'; import { SettingsUserStore } from 'Stores/User/Settings'; import { FileInfo, RFC822 } from 'Common/File'; @@ -157,17 +157,15 @@ export class MessageModel extends AbstractModel { tagOptions: () => { const tagOptions = []; - FolderUserStore.currentFolder().permanentFlags.forEach(value => { - if (isAllowedKeyword(value)) { - let lower = value.toLowerCase(); - tagOptions.push({ - css: 'msgflag-' + lower, - value: value, - checked: this.flags().includes(lower), - label: i18n('MESSAGE_TAGS/'+lower, 0, value), - toggle: (/*obj*/) => toggleTag(this, value) - }); - } + FolderUserStore.currentFolder().optionalTags().forEach(value => { + let lower = value.toLowerCase(); + tagOptions.push({ + css: 'msgflag-' + lower, + value: value, + checked: this.flags().includes(lower), + label: i18n('MESSAGE_TAGS/'+lower, 0, value), + toggle: (/*obj*/) => toggleTag(this, value) + }); }); return tagOptions }, diff --git a/dev/Stores/User/Messagelist.js b/dev/Stores/User/Messagelist.js index b160626b1..4a49520fc 100644 --- a/dev/Stores/User/Messagelist.js +++ b/dev/Stores/User/Messagelist.js @@ -32,6 +32,8 @@ import { SettingsGet } from 'Common/Globals'; import { SUB_QUERY_PREFIX } from 'Common/Links'; import { AppUserStore } from 'Stores/User/App'; +import { baseCollator } from 'Common/Translator'; + const isChecked = item => item.checked(), replaceHash = hash => { @@ -254,17 +256,14 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCach let flags = folderInfo.permanentFlags || []; if (flags.includes('\\*')) { + /** Add Thunderbird labels */ let i = 6; while (--i) { flags.includes('$label'+i) || flags.push('$label'+i); } + /** TODO: add others by default? */ } - flags.sort((a, b) => { - a = a.toUpperCase(); - b = b.toUpperCase(); - return (a < b) ? -1 : ((a > b) ? 1 : 0); - }); - folder.permanentFlags(flags); + folder.permanentFlags(flags.sort(baseCollator().compare)); MessagelistUserStore.notifyNewMessages(folder.fullName, collection.newMessages); } diff --git a/dev/View/Popup/AdvancedSearch.js b/dev/View/Popup/AdvancedSearch.js index 728868ffc..d3b084bbe 100644 --- a/dev/View/Popup/AdvancedSearch.js +++ b/dev/View/Popup/AdvancedSearch.js @@ -32,14 +32,12 @@ export class AdvancedSearchPopupView extends AbstractViewPopup { // Almost the same as MessageModel.tagOptions keywords: () => { const keywords = [{value:'',label:''}]; - FolderUserStore.currentFolder().permanentFlags.forEach(value => { - if (isAllowedKeyword(value)) { - let lower = value.toLowerCase(); - keywords.push({ - value: value, - label: i18n('MESSAGE_TAGS/'+lower, 0, lower) - }); - } + FolderUserStore.currentFolder().optionalTags().forEach(value => { + let lower = value.toLowerCase(); + keywords.push({ + value: value, + label: i18n('MESSAGE_TAGS/'+lower, 0, lower) + }); }); return keywords }, diff --git a/snappymail/v/0.0.0/app/localization/nl-NL/user.json b/snappymail/v/0.0.0/app/localization/nl-NL/user.json index e138ee980..654b2a253 100644 --- a/snappymail/v/0.0.0/app/localization/nl-NL/user.json +++ b/snappymail/v/0.0.0/app/localization/nl-NL/user.json @@ -154,7 +154,7 @@ "SPAM_SCORE": "Spamscore", "HAS_VIRUS_WARNING": "WAARSCHUWING: virus gedetecteerd", "TAGS": "Labels", - "NEW_TAG": "Nieuwe label", + "NEW_TAG": "Nieuw label", "ENABLE_TRACKING_LINKS": "Schakel trackinglinks in", "TRACKING_ENABLED": "Links worden nu bijgehouden wanneer erop wordt geklikt!" },