From 5c7147ccccec2ccd3512c8a99b8895b11adddaa8 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 1 Nov 2016 10:35:00 -0400 Subject: [PATCH] (js) Restore immediate deletion of messages --- NEWS | 1 + .../MailerUI/UIxMailFolderTemplate.wox | 2 +- .../js/Mailer/Mailbox.service.js | 9 +++++--- .../js/Mailer/MailboxController.js | 22 +++++++++++++++++-- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index 0bf13957a..203d32a8b 100644 --- a/NEWS +++ b/NEWS @@ -22,6 +22,7 @@ Bug fixes - [web] fixed auto-completion of list members (#3870) - [web] added missing options to subscribed addressbooks (#3850) - [web] fixed resource conflict error handling (403 vs 409 HTTP code) + - [web] restored immediate deletion of messages (without moving them to the trash) - [eas] improve handling of email folders without a parent - [eas] never send IMIP reply when the "initiator" is Outlook 2013/2016 - [core] only consider SMTP addresses for AD's proxyAddresses (#3842) diff --git a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox index 4d49298ca..1a2e37deb 100644 --- a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox +++ b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox @@ -164,7 +164,7 @@ select_all - + delete diff --git a/UI/WebServerResources/js/Mailer/Mailbox.service.js b/UI/WebServerResources/js/Mailer/Mailbox.service.js index d21a0b1c1..08ddd8b97 100644 --- a/UI/WebServerResources/js/Mailer/Mailbox.service.js +++ b/UI/WebServerResources/js/Mailer/Mailbox.service.js @@ -676,11 +676,14 @@ * @desc Delete multiple messages from mailbox. * @return a promise of the HTTP operation */ - Mailbox.prototype.$deleteMessages = function(messages) { - var _this = this, uids; + Mailbox.prototype.$deleteMessages = function(messages, options) { + var _this = this, uids, data; uids = _.map(messages, 'uid'); - return Mailbox.$$resource.post(this.id, 'batchDelete', {uids: uids}) + data = { uids: uids }; + if (options) angular.extend(data, options); + + return Mailbox.$$resource.post(this.id, 'batchDelete', data) .then(function(data) { // Update inbox quota if (data.quotas) diff --git a/UI/WebServerResources/js/Mailer/MailboxController.js b/UI/WebServerResources/js/Mailer/MailboxController.js index 0ff27cbfd..b00ee33bb 100644 --- a/UI/WebServerResources/js/Mailer/MailboxController.js +++ b/UI/WebServerResources/js/Mailer/MailboxController.js @@ -268,9 +268,9 @@ return [vm.selectedFolder]; } + // Unselect current message and cleverly load the next message. + // This function must not be called in virtual mode. function _unselectMessage(message, index) { - // Unselect current message and cleverly load the next message. - // This function must not be called in virtual mode. var nextMessage, previousMessage, nextIndex = index; vm.mode.multiple = vm.selectedFolder.$selectedCount(); if (message) { @@ -327,6 +327,24 @@ // In normal mode, we immediately unselect the selected message. _unselectMessage(deleteSelectedMessage, index); } + }, function(response) { + messageDialog = Dialog.confirm(l('Warning'), + l('The messages could not be moved to the trash folder. Would you like to delete them immediately?'), + { ok: l('Delete') }) + .then(function() { + vm.selectedFolder.$deleteMessages(selectedMessages, { withoutTrash: true }).then(function(index) { + if (Mailbox.$virtualMode) { + // When performing an advanced search, we refresh the view if the selected message + // was deleted, but only once all promises have completed. + if (deleteSelectedMessage) + $state.go('mail.account.virtualMailbox'); + } + else { + // In normal mode, we immediately unselect the selected message. + _unselectMessage(deleteSelectedMessage, index); + } + }); + }); }); }) .finally(function() {