From 15e59ef65fd2bf98ccf476b25d06cff0f3d0ad58 Mon Sep 17 00:00:00 2001 From: Sergey Mosin Date: Thu, 13 Jul 2023 19:22:04 -0400 Subject: [PATCH 1/4] fix: allow clicking action on entire "ListItem" area, instead of just the "text elements" --- dev/Common/Selector.js | 12 ++++++++++-- dev/View/User/MailBox/MessageList.js | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/dev/Common/Selector.js b/dev/Common/Selector.js index 88c044daf..bb7cfed70 100644 --- a/dev/Common/Selector.js +++ b/dev/Common/Selector.js @@ -200,8 +200,16 @@ export class Selector { addEventsListeners(contentScrollable, { click: event => { - let el = event.target.closestWithin(this.sItemSelector, contentScrollable); - el && this.actionClick(ko.dataFor(el), event); + + const lowerClassName = event.target.className.toLowerCase(); + if (this.sItemSelector !== '.messageListItem' + || (lowerClassName.indexOf('flagparent') === -1 + && lowerClassName.indexOf('checkbox') === -1)) { + + let el = event.target.closestWithin(this.sItemSelector, contentScrollable); + el && this.actionClick(ko.dataFor(el), event); + + } const item = getItem(this.sItemCheckedSelector); if (item) { diff --git a/dev/View/User/MailBox/MessageList.js b/dev/View/User/MailBox/MessageList.js index cf409f3b7..ef91c15ea 100644 --- a/dev/View/User/MailBox/MessageList.js +++ b/dev/View/User/MailBox/MessageList.js @@ -219,7 +219,7 @@ export class MailMessageList extends AbstractViewRight { MessagelistUserStore, MessagelistUserStore.selectedMessage, MessagelistUserStore.focusedMessage, - '.messageListItem .actionHandle', + '.messageListItem', '.messageListItem .messageCheckbox', '.messageListItem.focused' ); From d5965bf1d79910cd87fc9ca9c66b851198336525 Mon Sep 17 00:00:00 2001 From: Sergey Mosin Date: Sat, 29 Jul 2023 08:24:52 -0400 Subject: [PATCH 2/4] fix: nextcloud iFrame mode: click on unified search result opens inner iFrame --- integrations/nextcloud/snappymail/js/snappymail.js | 7 +++++++ .../nextcloud/snappymail/lib/Search/Provider.php | 10 +++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/integrations/nextcloud/snappymail/js/snappymail.js b/integrations/nextcloud/snappymail/js/snappymail.js index 38a915ab7..fcbd88da3 100644 --- a/integrations/nextcloud/snappymail/js/snappymail.js +++ b/integrations/nextcloud/snappymail/js/snappymail.js @@ -141,3 +141,10 @@ function SnappyMailFormHelper(oForm) console.error(e); } } + +addEventListener('hashchange', (event) => { + const search = event.newURL.substring(event.newURL.lastIndexOf('/') + 1); + if (search && search.length < 25) { + document.getElementById('rliframe').contentWindow.rl.app.messageList.mainSearch(search); + } +}); diff --git a/integrations/nextcloud/snappymail/lib/Search/Provider.php b/integrations/nextcloud/snappymail/lib/Search/Provider.php index 7b9b63157..f0eccbf79 100644 --- a/integrations/nextcloud/snappymail/lib/Search/Provider.php +++ b/integrations/nextcloud/snappymail/lib/Search/Provider.php @@ -91,12 +91,12 @@ class Provider implements IProvider $MessageCollection = $oMailClient->MessageList($oParams); $baseURL = $this->urlGenerator->linkToRoute('snappymail.page.index'); - $config = \OC::$server->getConfig(); - if ($config->getAppValue('snappymail', 'snappymail-no-embed')) { - $baseURL .= '?target='; - } else { +// $config = \OC::$server->getConfig(); +// if ($config->getAppValue('snappymail', 'snappymail-no-embed')) { +// $baseURL .= '?target='; +// } else { $baseURL .= '#'; - } +// } $search = \rawurlencode($oParams->sSearch); // $MessageCollection->totalEmails; From 1b7e144a6e84b845c9a792db7e64683bee349f09 Mon Sep 17 00:00:00 2001 From: Sergey Mosin Date: Thu, 10 Aug 2023 00:07:31 -0400 Subject: [PATCH 3/4] fix: tag 'style' is lost in replies --- vendors/squire/build/squire-raw.js | 1 + 1 file changed, 1 insertion(+) diff --git a/vendors/squire/build/squire-raw.js b/vendors/squire/build/squire-raw.js index a12152ce4..4b20e8311 100644 --- a/vendors/squire/build/squire-raw.js +++ b/vendors/squire/build/squire-raw.js @@ -1345,6 +1345,7 @@ const color = node.color, newTag = createElement('SPAN'), css = newTag.style; + newTag.style.cssText = node.style.cssText; if (face) { css.fontFamily = face; } From 8ab30552232786458824fd6e5ae5670ed78ced33 Mon Sep 17 00:00:00 2001 From: Sergey Mosin Date: Fri, 11 Aug 2023 21:08:05 -0400 Subject: [PATCH 4/4] fix: unseen indicator is not shown in thread view when 'listGrouped' settings is false + show unseen message count when the message list is threaded --- dev/Model/Message.js | 5 +++++ dev/Stores/User/Messagelist.js | 22 ++++++++++++++----- .../templates/Views/User/MailMessageList.html | 4 ++-- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/dev/Model/Message.js b/dev/Model/Message.js index 8e9e97bc7..9f2c54b49 100644 --- a/dev/Model/Message.js +++ b/dev/Model/Message.js @@ -128,6 +128,11 @@ export class MessageModel extends AbstractModel { threadsLen: () => rl.app.messageList.threadUid() ? 0 : this.threads().length, threadUnseenLen: () => rl.app.messageList.threadUid() ? 0 : this.threadUnseen().length, + threadsLenText: () => { + const unseenLen = this.threadUnseenLen(); + return this.threadsLen() + (unseenLen > 0 ? '/' + unseenLen : ''); + }, + isUnseen: () => !this.flags().includes('\\seen'), isFlagged: () => this.flags().includes('\\flagged'), // isJunk: () => this.flags().includes('$junk') && !this.flags().includes('$nonjunk'), diff --git a/dev/Stores/User/Messagelist.js b/dev/Stores/User/Messagelist.js index c9ada4545..025ea728b 100644 --- a/dev/Stores/User/Messagelist.js +++ b/dev/Stores/User/Messagelist.js @@ -344,13 +344,23 @@ MessagelistUserStore.setAction = (sFolderFullName, iSetAction, messages) => { length; if (iSetAction == MessageSetAction.SetSeen) { - messages.forEach(oMessage => - oMessage.isUnseen() && rootUids.push(oMessage.uid) && oMessage.flags.push('\\seen') - ); + messages.forEach(oMessage => { + if (oMessage.isUnseen() && rootUids.push(oMessage.uid)) { + oMessage.flags.push('\\seen'); + if (oMessage.threads().length > 0 && oMessage.threadUnseen().includes(oMessage.uid)) { + oMessage.threadUnseen.remove(oMessage.uid); + } + } + }); } else if (iSetAction == MessageSetAction.UnsetSeen) { - messages.forEach(oMessage => - !oMessage.isUnseen() && rootUids.push(oMessage.uid) && oMessage.flags.remove('\\seen') - ); + messages.forEach(oMessage => { + if (!oMessage.isUnseen() && rootUids.push(oMessage.uid)) { + oMessage.flags.remove('\\seen'); + if (oMessage.threads().length > 0 && !oMessage.threadUnseen().includes(oMessage.uid)) { + oMessage.threadUnseen.push(oMessage.uid); + } + } + }); } else if (iSetAction == MessageSetAction.SetFlag) { messages.forEach(oMessage => !oMessage.isFlagged() && rootUids.push(oMessage.uid) && oMessage.flags.push('\\flagged') diff --git a/snappymail/v/0.0.0/app/templates/Views/User/MailMessageList.html b/snappymail/v/0.0.0/app/templates/Views/User/MailMessageList.html index 4a4dd3701..a5bd63588 100644 --- a/snappymail/v/0.0.0/app/templates/Views/User/MailMessageList.html +++ b/snappymail/v/0.0.0/app/templates/Views/User/MailMessageList.html @@ -139,7 +139,7 @@
-
+
@@ -159,7 +159,7 @@
-
+