summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@protonmail.com>2017-11-01 14:30:39 +0100
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2017-11-21 15:55:05 +0100
commit162f4a99841666753dd6dbb6321ce7daab0876f8 (patch)
tree1d30330ca8160a74be33304e89a2f5743adaa129 /js
parent072f88cddc66f83451bcb95f15cf356a6ba000bf (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.js12
-rw-r--r--js/services/addressBook_service.js11
-rw-r--r--js/services/contact_service.js21
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');
};
});