From d9d59c6b52382769d7793883da50782bfb10cdbc Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Wed, 26 Aug 2015 21:22:39 -0400 Subject: [PATCH] (fix) Force a single mail composer dialog --- .../js/Mailer/MailboxController.js | 39 ++++++++++-------- .../js/Mailer/MessageController.js | 41 +++++++++++-------- 2 files changed, 46 insertions(+), 34 deletions(-) diff --git a/UI/WebServerResources/js/Mailer/MailboxController.js b/UI/WebServerResources/js/Mailer/MailboxController.js index 0fcba610e..dbabdf1fa 100644 --- a/UI/WebServerResources/js/Mailer/MailboxController.js +++ b/UI/WebServerResources/js/Mailer/MailboxController.js @@ -8,7 +8,7 @@ */ MailboxController.$inject = ['$state', '$timeout', '$mdDialog', 'stateAccounts', 'stateAccount', 'stateMailbox', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox']; function MailboxController($state, $timeout, $mdDialog, stateAccounts, stateAccount, stateMailbox, encodeUriFilter, focus, Dialog, Account, Mailbox) { - var vm = this; + var vm = this, messageDialog = null; Mailbox.selectedFolder = stateMailbox; @@ -127,22 +127,29 @@ } function newMessage($event) { - var message = vm.account.$newMessage(); + var message; - $mdDialog.show({ - parent: angular.element(document.body), - targetEvent: $event, - clickOutsideToClose: false, - escapeToClose: false, - templateUrl: 'UIxMailEditor', - controller: 'MessageEditorController', - controllerAs: 'editor', - locals: { - stateAccounts: vm.accounts, - stateMessage: message, - stateRecipients: [] - } - }); + if (messageDialog === null) { + message = vm.account.$newMessage(); + messageDialog = $mdDialog + .show({ + parent: angular.element(document.body), + targetEvent: $event, + clickOutsideToClose: false, + escapeToClose: false, + templateUrl: 'UIxMailEditor', + controller: 'MessageEditorController', + controllerAs: 'editor', + locals: { + stateAccounts: vm.accounts, + stateMessage: message, + stateRecipients: [] + } + }) + .finally(function() { + messageDialog = null; + }); + } } } diff --git a/UI/WebServerResources/js/Mailer/MessageController.js b/UI/WebServerResources/js/Mailer/MessageController.js index 22c9e223e..a2b8ea8ca 100644 --- a/UI/WebServerResources/js/Mailer/MessageController.js +++ b/UI/WebServerResources/js/Mailer/MessageController.js @@ -8,7 +8,7 @@ */ MessageController.$inject = ['$scope', '$state', '$mdDialog', 'stateAccounts', 'stateAccount', 'stateMailbox', 'stateMessage', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox', 'Message']; function MessageController($scope, $state, $mdDialog, stateAccounts, stateAccount, stateMailbox, stateMessage, encodeUriFilter, focus, Dialog, Account, Mailbox, Message) { - var vm = this; + var vm = this, messageDialog = null; vm.accounts = stateAccounts; vm.account = stateAccount; @@ -50,24 +50,29 @@ } function showMailEditor($event, message, recipients) { + if (messageDialog === null) { + if (!angular.isDefined(recipients)) + recipients = []; - if (!angular.isDefined(recipients)) - recipients = []; - - $mdDialog.show({ - parent: angular.element(document.body), - targetEvent: $event, - clickOutsideToClose: false, - escapeToClose: false, - templateUrl: 'UIxMailEditor', - controller: 'MessageEditorController', - controllerAs: 'editor', - locals: { - stateAccounts: vm.accounts, - stateMessage: message, - stateRecipients: recipients - } - }); + messageDialog = $mdDialog + .show({ + parent: angular.element(document.body), + targetEvent: $event, + clickOutsideToClose: false, + escapeToClose: false, + templateUrl: 'UIxMailEditor', + controller: 'MessageEditorController', + controllerAs: 'editor', + locals: { + stateAccounts: vm.accounts, + stateMessage: message, + stateRecipients: recipients + } + }) + .finally(function() { + messageDialog = null; + }); + } } function close() {