(fix) Force a single mail composer dialog

This commit is contained in:
Francis Lachapelle 2015-08-26 21:22:39 -04:00
parent 69000a0929
commit d9d59c6b52
2 changed files with 46 additions and 34 deletions

View file

@ -8,7 +8,7 @@
*/ */
MailboxController.$inject = ['$state', '$timeout', '$mdDialog', 'stateAccounts', 'stateAccount', 'stateMailbox', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox']; 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) { function MailboxController($state, $timeout, $mdDialog, stateAccounts, stateAccount, stateMailbox, encodeUriFilter, focus, Dialog, Account, Mailbox) {
var vm = this; var vm = this, messageDialog = null;
Mailbox.selectedFolder = stateMailbox; Mailbox.selectedFolder = stateMailbox;
@ -127,22 +127,29 @@
} }
function newMessage($event) { function newMessage($event) {
var message = vm.account.$newMessage(); var message;
$mdDialog.show({ if (messageDialog === null) {
parent: angular.element(document.body), message = vm.account.$newMessage();
targetEvent: $event, messageDialog = $mdDialog
clickOutsideToClose: false, .show({
escapeToClose: false, parent: angular.element(document.body),
templateUrl: 'UIxMailEditor', targetEvent: $event,
controller: 'MessageEditorController', clickOutsideToClose: false,
controllerAs: 'editor', escapeToClose: false,
locals: { templateUrl: 'UIxMailEditor',
stateAccounts: vm.accounts, controller: 'MessageEditorController',
stateMessage: message, controllerAs: 'editor',
stateRecipients: [] locals: {
} stateAccounts: vm.accounts,
}); stateMessage: message,
stateRecipients: []
}
})
.finally(function() {
messageDialog = null;
});
}
} }
} }

View file

@ -8,7 +8,7 @@
*/ */
MessageController.$inject = ['$scope', '$state', '$mdDialog', 'stateAccounts', 'stateAccount', 'stateMailbox', 'stateMessage', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox', 'Message']; 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) { 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.accounts = stateAccounts;
vm.account = stateAccount; vm.account = stateAccount;
@ -50,24 +50,29 @@
} }
function showMailEditor($event, message, recipients) { function showMailEditor($event, message, recipients) {
if (messageDialog === null) {
if (!angular.isDefined(recipients))
recipients = [];
if (!angular.isDefined(recipients)) messageDialog = $mdDialog
recipients = []; .show({
parent: angular.element(document.body),
$mdDialog.show({ targetEvent: $event,
parent: angular.element(document.body), clickOutsideToClose: false,
targetEvent: $event, escapeToClose: false,
clickOutsideToClose: false, templateUrl: 'UIxMailEditor',
escapeToClose: false, controller: 'MessageEditorController',
templateUrl: 'UIxMailEditor', controllerAs: 'editor',
controller: 'MessageEditorController', locals: {
controllerAs: 'editor', stateAccounts: vm.accounts,
locals: { stateMessage: message,
stateAccounts: vm.accounts, stateRecipients: recipients
stateMessage: message, }
stateRecipients: recipients })
} .finally(function() {
}); messageDialog = null;
});
}
} }
function close() { function close() {