(js) Fix mailbox deletion from the hot key

pull/237/head
Francis Lachapelle 2017-06-14 13:24:08 -04:00
parent 9b2527ce6d
commit 67b9ef0b8b
3 changed files with 32 additions and 29 deletions

View File

@ -52,8 +52,8 @@
key: 'backspace',
description: l('Delete selected message or folder'),
callback: function() {
if (Mailbox.selectedFolder && !Mailbox.selectedFolder.hasSelectedMessage())
confirmDelete(Mailbox.selectedFolder);
if (Mailbox.selectedFolderController && Mailbox.selectedFolder && !Mailbox.selectedFolder.hasSelectedMessage())
Mailbox.selectedFolderController.confirmDelete(Mailbox.selectedFolder);
}
}));

View File

@ -37,6 +37,7 @@
// Called from a sgMailboxListItem controller
this.selectFolder = function (mailboxController) {
Mailbox.selectedFolderController = mailboxController;
if (Mailbox.selectedFolder !== null) {
var selectedMailboxCtrl = _.find(mailboxes, function(ctrl) {
return ctrl.mailbox.id == Mailbox.selectedFolder.id;

View File

@ -74,7 +74,7 @@
// Check if router's state has selected a mailbox
if (Mailbox.selectedFolder !== null && Mailbox.selectedFolder.id == this.mailbox.id) {
this.selectFolder();
this.accountController.selectFolder(this);
}
};
@ -145,6 +145,32 @@
};
this.confirmDelete = function() {
Dialog.confirm(l('Warning'),
l('Do you really want to move this folder into the trash ?'),
{ ok: l('Delete') })
.then(function() {
$ctrl.mailbox.$delete()
.then(function() {
$state.go('mail.account.inbox');
}, function(response) {
Dialog.confirm(l('Warning'),
l('The mailbox could not be moved to the trash folder. Would you like to delete it immediately?'),
{ ok: l('Delete') })
.then(function() {
$ctrl.mailbox.$delete({ withoutTrash: true })
.then(function() {
$state.go('mail.account.inbox');
}, function(response) {
Dialog.alert(l('An error occured while deleting the mailbox "%{0}".', $ctrl.mailbox.name),
l(response.error));
});
});
});
});
};
this.showMenu = function($event) {
var panelPosition = $mdPanel.newPanelPosition()
.relativeTo(this.moreOptionsButton)
@ -162,7 +188,8 @@
attachTo: angular.element(document.body),
locals: {
itemCtrl: this,
folder: this.mailbox
folder: this.mailbox,
confirmDelete: this.confirmDelete
},
bindToController: true,
controller: MenuController,
@ -231,31 +258,6 @@
});
};
this.confirmDelete = function() {
Dialog.confirm(l('Warning'),
l('Do you really want to move this folder into the trash ?'),
{ ok: l('Delete') })
.then(function() {
$menuCtrl.folder.$delete()
.then(function() {
$state.go('mail.account.inbox');
}, function(response) {
Dialog.confirm(l('Warning'),
l('The mailbox could not be moved to the trash folder. Would you like to delete it immediately?'),
{ ok: l('Delete') })
.then(function() {
$menuCtrl.folder.$delete({ withoutTrash: true })
.then(function() {
$state.go('mail.account.inbox');
}, function(response) {
Dialog.alert(l('An error occured while deleting the mailbox "%{0}".', $menuCtrl.folder.name),
l(response.error));
});
});
});
});
};
this.showAdvancedSearch = function() {
Mailbox.$virtualPath = this.folder.path;
// Close sidenav on small devices