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