diff options
author | John Molakvoæ <skjnldsv@protonmail.com> | 2017-11-01 14:30:39 +0100 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2017-11-21 15:55:05 +0100 |
commit | 162f4a99841666753dd6dbb6321ce7daab0876f8 (patch) | |
tree | 1d30330ca8160a74be33304e89a2f5743adaa129 /js | |
parent | 072f88cddc66f83451bcb95f15cf356a6ba000bf (diff) |
Update and delete function addition
Cleanup old unproper function
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Diffstat (limited to 'js')
-rw-r--r-- | js/components/contactList/contactList_controller.js | 12 | ||||
-rw-r--r-- | js/services/addressBook_service.js | 11 | ||||
-rw-r--r-- | js/services/contact_service.js | 21 |
3 files changed, 24 insertions, 20 deletions
diff --git a/js/components/contactList/contactList_controller.js b/js/components/contactList/contactList_controller.js index 6721cad6..ef11ab65 100644 --- a/js/components/contactList/contactList_controller.js +++ b/js/components/contactList/contactList_controller.js @@ -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; + } }); }); diff --git a/js/services/addressBook_service.js b/js/services/addressBook_service.js index a03424af..d754d124 100644 --- a/js/services/addressBook_service.js +++ b/js/services/addressBook_service.js @@ -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; }); diff --git a/js/services/contact_service.js b/js/services/contact_service.js index 253ed7f7..d44244ba 100644 --- a/js/services/contact_service.js +++ b/js/services/contact_service.js @@ -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'); }; }); |