fix(mail(js)): fix message(s) deletion when overquota

feature/mail-identities
Francis Lachapelle 2020-06-16 12:57:17 -04:00
parent 200c353645
commit 35ebb7aaeb
4 changed files with 46 additions and 17 deletions

View File

@ -786,13 +786,14 @@
var currentUids = uids.slice(start, end),
currentMessages = messages.slice(start, end),
data = { uids: currentUids };
if (options) angular.extend(data, options);
return Mailbox.$$resource.post(_this.id, 'batchDelete', data).then(function(data) {
if (end < uids.length) {
_this.$_deleteMessages(currentUids, currentMessages);
return _deleteMessages(end, Math.min(end + batchSize, uids.length));
}
else {
// Update inbox quota
// Last API call; update inbox quota
if (data.quotas)
_this.$account.updateQuota(data.quotas);
return _this.$_deleteMessages(currentUids, currentMessages);

View File

@ -124,6 +124,8 @@
}
function _compactBeforeUnload(event) {
if (Mailbox.$virtualMode)
return true;
return vm.selectedFolder.$compact();
}
@ -401,8 +403,8 @@
if (vm.messageDialog === null && _.size(selectedMessages) > 0)
vm.messageDialog = Dialog.confirm(l('Confirmation'),
l('Are you sure you want to delete the selected messages?'),
{ ok: l('Delete') })
l('Are you sure you want to delete the selected messages?'),
{ ok: l('Delete') })
.then(function() {
var deleteSelectedMessage = vm.selectedFolder.hasSelectedMessage();
vm.selectedFolder.$deleteMessages(selectedMessages).then(function(index) {
@ -421,18 +423,22 @@
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);
}
});
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() {
vm.messageDialog = null;
});
});
});
})

View File

@ -53,7 +53,11 @@
key: hotkey,
description: l('Delete selected message or folder'),
callback: function() {
if (Mailbox.selectedFolderController && Mailbox.selectedFolder && Mailbox.selectedFolder.$isEditable && !Mailbox.selectedFolder.hasSelectedMessage())
if (Mailbox.selectedFolderController &&
Mailbox.selectedFolder &&
Mailbox.selectedFolder.$isEditable &&
!Mailbox.selectedFolder.hasSelectedMessage() &&
Mailbox.selectedFolder.$selectedCount() === 0)
Mailbox.selectedFolderController.confirmDelete(Mailbox.selectedFolder);
}
}));

View File

@ -331,7 +331,7 @@
mailbox = Mailbox.selectedFolder; // the VirtualMailbox instance
}
mailbox.$deleteMessages([message]).then(function(index) {
function _success(index) {
var nextIndex = index;
// Remove message object from scope
message = null;
@ -378,6 +378,24 @@
catch (error) {}
}
vm.closePopup();
}
mailbox.$deleteMessages([message]).then(_success, function(response) {
_messageDialog(
Dialog.confirm(l('Warning'),
l('The message could not be moved to the trash folder. Would you like to delete it immediately?'),
{ ok: l('Delete') })
.then(function() {
mailbox.$deleteMessages([message], { withoutTrash: true })
.then(_success)
.finally(function() {
_messageDialog(null);
});
})
.finally(function() {
_messageDialog(null);
})
);
});
};