From 642db852c72b6f9d13e7bb8eb1f74e5baeb63edf Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 21 Oct 2021 17:11:43 -0400 Subject: [PATCH] fix(mail(js)): reset mailboxes state when leaving global search --- .../js/Mailer/Mailbox.service.js | 38 +++++++++---------- .../js/Mailer/MailboxController.js | 11 ++---- .../js/Mailer/VirtualMailbox.service.js | 11 ++++++ .../js/Mailer/sgMailboxListItem.directive.js | 5 ++- 4 files changed, 38 insertions(+), 27 deletions(-) diff --git a/UI/WebServerResources/js/Mailer/Mailbox.service.js b/UI/WebServerResources/js/Mailer/Mailbox.service.js index f9d210263..f73fc69b8 100644 --- a/UI/WebServerResources/js/Mailer/Mailbox.service.js +++ b/UI/WebServerResources/js/Mailer/Mailbox.service.js @@ -869,25 +869,6 @@ }); }; - /** - * @function $reset - * @memberof Mailbox.prototype - * @desc Reset the original state the mailbox's data. - */ - Mailbox.prototype.$reset = function(options) { - var _this = this; - angular.forEach(this.$shadowData, function(value, key) { - delete _this[key]; - }); - angular.extend(this, this.$shadowData); - this.$shadowData = this.$omit(); - if (options && options.filter) { - this.$messages = []; - this.$visibleMessages = []; - delete this.$syncToken; - } - }; - /** * @function $move * @memberof Mailbox.prototype @@ -935,6 +916,25 @@ return this.$account.$newMailbox(path, name); }; + /** + * @function $reset + * @memberof Mailbox.prototype + * @desc Reset the original state the mailbox's data. + */ + Mailbox.prototype.$reset = function(options) { + var _this = this; + angular.forEach(this.$shadowData, function(value, key) { + delete _this[key]; + }); + angular.extend(this, this.$shadowData); + this.$shadowData = this.$omit(); + if (options && options.filter) { + this.$messages = []; + this.$visibleMessages = []; + delete this.$syncToken; + } + }; + /** * @function $omit * @memberof Mailbox.prototype diff --git a/UI/WebServerResources/js/Mailer/MailboxController.js b/UI/WebServerResources/js/Mailer/MailboxController.js index 8f3ec444d..1b483e369 100644 --- a/UI/WebServerResources/js/Mailer/MailboxController.js +++ b/UI/WebServerResources/js/Mailer/MailboxController.js @@ -42,6 +42,10 @@ _.forEach(hotkeys, function(key) { sgHotkeys.deregisterHotkey(key); }); + if (vm.mode.search) { + vm.mode.search = false; + vm.selectedFolder.$reset({ filter: true }); + } }); // Update window's title with unseen messages count of selected mailbox @@ -53,13 +57,6 @@ title += ' | ' + defaultWindowTitle; $window.document.title = title; }); - - $scope.$on('$destroy', function() { - if (vm.mode.search) { - vm.mode.search = false; - vm.selectedFolder.$reset({ filter: true }); - } - }); }; function _registerHotkeys(keys) { diff --git a/UI/WebServerResources/js/Mailer/VirtualMailbox.service.js b/UI/WebServerResources/js/Mailer/VirtualMailbox.service.js index 17d61939a..84e187d47 100644 --- a/UI/WebServerResources/js/Mailer/VirtualMailbox.service.js +++ b/UI/WebServerResources/js/Mailer/VirtualMailbox.service.js @@ -399,4 +399,15 @@ return true; }; + /** + * @function $reset + * @memberof VirtualMailbox.prototype + * @desc Reset the original state all mailboxes data. + */ + VirtualMailbox.prototype.$reset = function(options) { + _.forEach(this.$mailboxes, function(mailbox) { + mailbox.$reset(options); + }); + }; + })(); diff --git a/UI/WebServerResources/js/Mailer/sgMailboxListItem.directive.js b/UI/WebServerResources/js/Mailer/sgMailboxListItem.directive.js index 921948cd4..694d51857 100644 --- a/UI/WebServerResources/js/Mailer/sgMailboxListItem.directive.js +++ b/UI/WebServerResources/js/Mailer/sgMailboxListItem.directive.js @@ -87,7 +87,10 @@ if (this.editMode || this.mailbox == Mailbox.selectedFolder || this.mailbox.isNoSelect()) return; Mailbox.$virtualPath = false; - Mailbox.$virtualMode = false; + if (Mailbox.$virtualMode) { + Mailbox.$virtualMode = false; + Mailbox.selectedFolder.$reset({ filter: true }); + } this.accountController.selectFolder(this); if ($event) { $state.go('mail.account.mailbox', {