From 9e4edd8843d94a1cb48c3e8a3713c0298eb17eed Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Fri, 3 Jun 2022 14:46:05 +0200 Subject: [PATCH] Improved tags #419 --- dev/Model/FolderCollection.js | 27 +++++++++++++++---- dev/Model/Message.js | 12 ++++++++- dev/Stores/User/Messagelist.js | 5 ++++ dev/View/User/MailBox/MessageView.js | 2 ++ .../templates/Views/User/MailMessageView.html | 2 ++ 5 files changed, 42 insertions(+), 6 deletions(-) diff --git a/dev/Model/FolderCollection.js b/dev/Model/FolderCollection.js index ea9742dae..48914fbf7 100644 --- a/dev/Model/FolderCollection.js +++ b/dev/Model/FolderCollection.js @@ -263,11 +263,17 @@ export class FolderModel extends AbstractModel { kolabType: null, - collapsed: true + collapsed: true, + + tagsAllowed: false }); + this.flags = ko.observableArray(); + this.permanentFlags = ko.observableArray(); + this.addSubscribables({ - kolabType: sValue => this.metadata[FolderMetadataKeys.KolabFolderType] = sValue + kolabType: sValue => this.metadata[FolderMetadataKeys.KolabFolderType] = sValue, + permanentFlags: aValue => this.tagsAllowed(aValue.includes('\\*')) }); this.subFolders = ko.observableArray(new FolderCollectionModel); @@ -296,9 +302,20 @@ export class FolderModel extends AbstractModel { } }) .extend({ notify: 'always' }); - - this.flags = ko.observableArray(); - this.permanentFlags = ko.observableArray(); +/* + https://www.rfc-editor.org/rfc/rfc8621.html#section-2 + "myRights": { + "mayAddItems": true, + "mayRename": false, + "maySubmit": true, + "mayDelete": false, + "maySetKeywords": true, + "mayRemoveItems": true, + "mayCreateChild": true, + "maySetSeen": true, + "mayReadItems": true + }, +*/ } /** diff --git a/dev/Model/Message.js b/dev/Model/Message.js index 1037d7952..3ecf2935f 100644 --- a/dev/Model/Message.js +++ b/dev/Model/Message.js @@ -113,11 +113,21 @@ export class MessageModel extends AbstractModel { this.flags = ko.observableArray(); const ignoredTags = [ + '$forwarded', + // Mailo + 'sent', + // KMail '$sent', '$signed', '$error', '$queued', - '$forwarded' + // GMail + '$replied', + '$attachment', + '$notphishing', + '$phishing', + 'junk', + 'nonjunk' ]; this.addComputables({ diff --git a/dev/Stores/User/Messagelist.js b/dev/Stores/User/Messagelist.js index dde63b8c1..a1b8295dd 100644 --- a/dev/Stores/User/Messagelist.js +++ b/dev/Stores/User/Messagelist.js @@ -206,6 +206,11 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrenFolderCache } folder.flags(folderInfo.Flags); + folderInfo.PermanentFlags.sort((a, b) => { + a = a.toUpperCase(); + b = b.toUpperCase(); + return (a < b) ? -1 : ((a > b) ? 1 : 0); + }); folder.permanentFlags(folderInfo.PermanentFlags); MessagelistUserStore.initUidNextAndNewMessages(folder.fullName, folderInfo.UidNext, collection.NewMessages); diff --git a/dev/View/User/MailBox/MessageView.js b/dev/View/User/MailBox/MessageView.js index a31e6e03a..3c0d039f9 100644 --- a/dev/View/User/MailBox/MessageView.js +++ b/dev/View/User/MailBox/MessageView.js @@ -147,6 +147,8 @@ export class MailMessageView extends AbstractViewRight { ) }, + tagsAllowed: () => FolderUserStore.currentFolder() ? FolderUserStore.currentFolder().tagsAllowed() : false, + messageVisibility: () => !MessageUserStore.loading() && !!currentMessage(), canBeRepliedOrForwarded: () => !this.isDraftFolder() && this.messageVisibility(), diff --git a/snappymail/v/0.0.0/app/templates/Views/User/MailMessageView.html b/snappymail/v/0.0.0/app/templates/Views/User/MailMessageView.html index 2d049c08a..c87ae08f7 100644 --- a/snappymail/v/0.0.0/app/templates/Views/User/MailMessageView.html +++ b/snappymail/v/0.0.0/app/templates/Views/User/MailMessageView.html @@ -195,6 +195,7 @@
+ +