From ce1fb708a0cad4a8d0e76c2fa6e911f5f3e2f07c Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Wed, 18 May 2016 14:47:33 -0400 Subject: [PATCH] (js) Fix navigation in Mail advanced search mode --- .../MailerUI/UIxMailFolderTemplate.wox | 2 +- UI/Templates/MailerUI/UIxMailMainFrame.wox | 3 ++- .../js/Mailer/Mailbox.service.js | 20 +++++++++++++++ .../js/Mailer/MailboxController.js | 2 +- UI/WebServerResources/js/Mailer/Mailer.app.js | 6 +++-- .../js/Mailer/VirtualMailbox.service.js | 25 ++++++++++++++++++- 6 files changed, 52 insertions(+), 6 deletions(-) diff --git a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox index 4163f77a8..18e654385 100644 --- a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox +++ b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox @@ -319,7 +319,7 @@
+ md-transform-chip="app.newSearchParam($chip)" + sg-transform-on-blur="sg-transform-on-blur"> diff --git a/UI/WebServerResources/js/Mailer/Mailbox.service.js b/UI/WebServerResources/js/Mailer/Mailbox.service.js index 1c097d539..64eef92a3 100644 --- a/UI/WebServerResources/js/Mailer/Mailbox.service.js +++ b/UI/WebServerResources/js/Mailer/Mailbox.service.js @@ -172,6 +172,16 @@ } }; + /** + * @function selectFolder + * @memberof Mailbox.prototype + * @desc Mark the folder as selected in the constructor unless virtual mode is active + */ + Mailbox.prototype.selectFolder = function() { + if (!Mailbox.$virtualMode) + Mailbox.selectedFolder = this; + }; + /** * @function getLength * @memberof Mailbox.prototype @@ -238,6 +248,16 @@ return this.selectedMessage == messageId; }; + /** + * @function hasSelectedMessage + * @memberof Mailbox.prototype + * @desc Check if a message is selected. + * @returns true if the a message is selected + */ + Mailbox.prototype.hasSelectedMessage = function() { + return angular.isDefined(this.selectedMessage); + }; + /** * @function $filter * @memberof Mailbox.prototype diff --git a/UI/WebServerResources/js/Mailer/MailboxController.js b/UI/WebServerResources/js/Mailer/MailboxController.js index b5f2c6921..d27d6dfe1 100644 --- a/UI/WebServerResources/js/Mailer/MailboxController.js +++ b/UI/WebServerResources/js/Mailer/MailboxController.js @@ -13,7 +13,7 @@ // Expose controller $window.$mailboxController = vm; - Mailbox.selectedFolder = stateMailbox; + stateMailbox.selectFolder(); vm.service = Mailbox; vm.accounts = stateAccounts; diff --git a/UI/WebServerResources/js/Mailer/Mailer.app.js b/UI/WebServerResources/js/Mailer/Mailer.app.js index ef0efc3d0..cdb279d38 100644 --- a/UI/WebServerResources/js/Mailer/Mailer.app.js +++ b/UI/WebServerResources/js/Mailer/Mailer.app.js @@ -61,6 +61,8 @@ controllerAs: 'viewer' } }, + onEnter: onEnterMessage, + onExit: onExitMessage, resolve: { stateMailbox: stateVirtualMailboxOfMessage, stateMessages: stateMessages, @@ -192,7 +194,7 @@ return mailbox; }; - if (Mailbox.selectedFolder) + if (Mailbox.selectedFolder && !Mailbox.$virtualMode) Mailbox.selectedFolder.$isLoading = true; mailbox = _find(stateAccount.$mailboxes); @@ -298,7 +300,7 @@ */ onExitMessage.$inject = ['stateMailbox']; function onExitMessage(stateMailbox) { - stateMailbox.selectedMessage = -1; + delete stateMailbox.selectedMessage; } /** diff --git a/UI/WebServerResources/js/Mailer/VirtualMailbox.service.js b/UI/WebServerResources/js/Mailer/VirtualMailbox.service.js index 0bc858f95..5830ca0cd 100644 --- a/UI/WebServerResources/js/Mailer/VirtualMailbox.service.js +++ b/UI/WebServerResources/js/Mailer/VirtualMailbox.service.js @@ -95,7 +95,9 @@ }); }); - search.finally(function() { _this.$isLoading = false; }); + search.finally(function() { + _this.$isLoading = false; + }); }; VirtualMailbox.prototype.stopSearch = function() { @@ -103,6 +105,15 @@ this.$isLoading = false; }; + /** + * @function selectFolder + * @memberof VirtualMailbox.prototype + * @desc A no-op for virtual mailbox + */ + VirtualMailbox.prototype.selectFolder = function() { + return; + }; + /** * @function resetSelectedMessage * @memberof VirtualMailbox.prototype @@ -114,6 +125,18 @@ }); }; + /** + * @function hasSelectedMessage + * @memberof VirtualMailbox.prototype + * @desc Check if a message is selected among the resulting mailboxes + * @returns true if one message is selected + */ + VirtualMailbox.prototype.hasSelectedMessage = function() { + return angular.isDefined(_.find(this.$mailboxes, function(mailbox) { + return angular.isDefined(mailbox.selectedMessage); + })); + }; + /** * @function isSelectedMessage * @memberof VirtualMailbox.prototype