(js) Fix refresh after deleting card(s)

pull/218/head
Francis Lachapelle 2016-07-19 16:31:48 -04:00
parent 88a0dfdac3
commit c9703c0f74
4 changed files with 24 additions and 11 deletions

3
NEWS
View File

@ -6,6 +6,9 @@ Enhancements
- [web] don't allow to send the message while an upload is in progress
- [web] notify when successfuly copied or moved some messages
Bug fixes
- [web] fixed refresh of addressbook when deleting one or many cards
3.1.4 (2016-07-12)
------------------

View File

@ -564,9 +564,21 @@
ids = _.map(cards, function(card) { return card.id; });
return AddressBook.$$resource.post(this.id, 'batchDelete', {uids: ids}).then(function() {
_this.$cards = _.differenceBy(_this.$cards, cards, 'id');
_.forEach(cards, function(card) {
delete _this.idsMap[card.id];
// Remove cards from $cards and idsMap
_.forEachRight(_this.$cards, function(card, index) {
var selectedIndex = _.findIndex(ids, function(id) {
return card.id == id;
});
if (selectedIndex > -1) {
ids.splice(selectedIndex, 1);
delete _this.idsMap[card.id];
if (_this.isSelectedCard(card.id))
delete _this.selectedCard;
_this.$cards.splice(index, 1);
}
else {
_this.idsMap[card.id] -= ids.length;
}
});
});
};

View File

@ -58,8 +58,10 @@
.then(function() {
// User confirmed the deletion
var selectedCards = _.filter(vm.selectedFolder.$cards, function(card) { return card.selected; });
vm.selectedFolder.$deleteCards(selectedCards);
delete vm.selectedFolder.selectedCard;
vm.selectedFolder.$deleteCards(selectedCards).then(function() {
if (!vm.selectedFolder.selectedCard)
$state.go('app.addressbook');
});
});
}

View File

@ -91,7 +91,7 @@
}
}
function close() {
$state.go('app.addressbook', { addressbookId: AddressBook.selectedFolder.id }).then(function() {
$state.go('app.addressbook').then(function() {
vm.card = null;
delete AddressBook.selectedFolder.selectedCard;
});
@ -118,12 +118,8 @@
{ ok: l('Delete') })
.then(function() {
// User confirmed the deletion
card.$delete()
AddressBook.selectedFolder.$deleteCards([card])
.then(function() {
// Remove card from addressbook
AddressBook.selectedFolder.$cards = _.reject(AddressBook.selectedFolder.$cards, function(o) {
return o.id == card.id;
});
close();
}, function(data, status) {
Dialog.alert(l('Warning'), l('An error occured while deleting the card "%{0}".',