mirror of https://github.com/nextcloud/contacts
Addressbook deletion callback notify
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
parent
04c051035d
commit
91356a9708
|
@ -1,5 +1,5 @@
|
|||
angular.module('contactsApp')
|
||||
.controller('addressbooklistCtrl', function($scope, AddressBookService) {
|
||||
.controller('addressbooklistCtrl', function($scope, $timeout, AddressBookService) {
|
||||
var ctrl = this;
|
||||
|
||||
ctrl.loading = true;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
angular.module('contactsApp')
|
||||
.controller('contactlistCtrl', function($scope, $filter, $route, $routeParams, $timeout, ContactService, SortByService, vCardPropertiesService, SearchService) {
|
||||
.controller('contactlistCtrl', function($scope, $filter, $route, $routeParams, $timeout, AddressBookService, ContactService, SortByService, vCardPropertiesService, SearchService) {
|
||||
var ctrl = this;
|
||||
|
||||
ctrl.routeParams = $routeParams;
|
||||
|
@ -92,6 +92,18 @@ angular.module('contactsApp')
|
|||
}); });
|
||||
});
|
||||
|
||||
AddressBookService.registerObserverCallback(function(ev) {
|
||||
$timeout(function () { $scope.$apply(function() {
|
||||
if (ev.event === 'delete') {
|
||||
// Get contacts
|
||||
ctrl.loading = true;
|
||||
ContactService.updateDeletedAddressbook(function() {
|
||||
ctrl.loading = false;
|
||||
});
|
||||
}
|
||||
}); });
|
||||
});
|
||||
|
||||
// Get contacts
|
||||
ContactService.getAll().then(function(contacts) {
|
||||
if(contacts.length>0) {
|
||||
|
|
|
@ -4,6 +4,18 @@ angular.module('contactsApp')
|
|||
var addressBooks = [];
|
||||
var loadPromise = undefined;
|
||||
|
||||
var observerCallbacks = [];
|
||||
|
||||
var notifyObservers = function(eventName) {
|
||||
var ev = {
|
||||
event: eventName,
|
||||
addressBooks: addressBooks
|
||||
};
|
||||
angular.forEach(observerCallbacks, function(callback) {
|
||||
callback(ev);
|
||||
});
|
||||
};
|
||||
|
||||
var loadAll = function() {
|
||||
if (addressBooks.length > 0) {
|
||||
return $q.when(addressBooks);
|
||||
|
@ -20,6 +32,10 @@ angular.module('contactsApp')
|
|||
};
|
||||
|
||||
return {
|
||||
registerObserverCallback: function(callback) {
|
||||
observerCallbacks.push(callback);
|
||||
},
|
||||
|
||||
getAll: function() {
|
||||
return loadAll().then(function() {
|
||||
return addressBooks;
|
||||
|
@ -64,6 +80,7 @@ angular.module('contactsApp')
|
|||
return DavClient.deleteAddressBook(addressBook).then(function() {
|
||||
var index = addressBooks.indexOf(addressBook);
|
||||
addressBooks.splice(index, 1);
|
||||
notifyObservers('delete');
|
||||
});
|
||||
});
|
||||
},
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
angular.module('contactsApp')
|
||||
.service('ContactService', function(DavClient, AddressBookService, Contact, $q, CacheFactory, uuid4) {
|
||||
.service('ContactService', function(DavClient, AddressBookService, Contact, $q, $filter, CacheFactory, uuid4) {
|
||||
|
||||
var cacheFilled = false;
|
||||
|
||||
|
@ -292,4 +292,22 @@ angular.module('contactsApp')
|
|||
notifyObservers('delete', contact.uid());
|
||||
});
|
||||
};
|
||||
|
||||
this.updateDeletedAddressbook = function(callback) {
|
||||
// Delete contacts which addressbook has been removed from cache
|
||||
AddressBookService.getAll().then(function (enabledAddressBooks) {
|
||||
var addressBooksIds = [];
|
||||
angular.forEach(enabledAddressBooks, function(addressBook) {
|
||||
addressBooksIds.push(addressBook.displayName);
|
||||
});
|
||||
angular.forEach(contacts.values(), function(contact) {
|
||||
if (addressBooksIds.indexOf(contact.addressBookId) === -1) {
|
||||
contacts.remove(contact.uid());
|
||||
notifyObservers('delete', contact.uid());
|
||||
}
|
||||
});
|
||||
callback();
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue