Update and delete function addition

Cleanup old unproper function

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
John Molakvoæ 2017-11-01 14:30:39 +01:00 committed by John Molakvoæ (skjnldsv)
parent 072f88cddc
commit 162f4a9984
No known key found for this signature in database
GPG Key ID: FB5ACEED51955BF8
3 changed files with 24 additions and 20 deletions

View File

@ -96,16 +96,22 @@ angular.module('contactsApp')
AddressBookService.registerObserverCallback(function(ev) {
$timeout(function() {
$scope.$apply(function() {
if (ev.event === 'delete') {
// Get contacts
switch (ev.event) {
case 'delete':
case 'disable':
ctrl.loading = true;
ContactService.updateDeletedAddressbook(function() {
ContactService.removeContactsFromAddressbook(ev.addressBook, function() {
ContactService.getAll().then(function(contacts) {
ctrl.contactList = contacts;
ctrl.loading = false;
ctrl.selectNearestContact(ctrl.getSelectedId());
});
});
break;
default:
// unknown event -> leave callback without action
return;
}
});
});

View File

@ -6,10 +6,11 @@ angular.module('contactsApp')
var observerCallbacks = [];
var notifyObservers = function(eventName) {
var notifyObservers = function(eventName, addressBook) {
var ev = {
event: eventName,
addressBooks: addressBooks
addressBooks: addressBooks,
addressBook: addressBook,
};
angular.forEach(observerCallbacks, function(callback) {
callback(ev);
@ -84,7 +85,7 @@ angular.module('contactsApp')
return DavClient.deleteAddressBook(addressBook).then(function() {
var index = addressBooks.indexOf(addressBook);
addressBooks.splice(index, 1);
notifyObservers('delete');
notifyObservers('delete', addressBook);
});
});
},
@ -134,6 +135,10 @@ angular.module('contactsApp')
).then(function(response) {
if (response.status === 207) {
addressBook.enabled = !addressBook.enabled;
notifyObservers(
addressBook.enabled ? 'enable' : 'disable',
addressBook
);
}
return addressBook;
});

View File

@ -333,21 +333,14 @@ angular.module('contactsApp')
});
};
this.updateDeletedAddressbook = function(callback) {
// Delete contacts which addressbook has been removed from cache
AddressBookService.getAll().then(function(addressBooks) {
var addressBooksIds = [];
angular.forEach(addressBooks, function(addressBook) {
addressBooksIds.push(addressBook.displayName);
});
angular.forEach(contactsCache.values(), function(contact) {
if (addressBooksIds.indexOf(contact.addressBookId) === -1) {
contactsCache.remove(contact.uid());
}
});
callback();
notifyObservers('groupsUpdate');
this.removeContactsFromAddressbook = function(addressBook, callback) {
angular.forEach(contactsCache.values(), function(contact) {
if (contact.addressBookId === addressBook.displayName) {
contactsCache.remove(contact.uid());
}
});
callback();
notifyObservers('groupsUpdate');
};
});