summaryrefslogtreecommitdiffstats
path: root/js/services/contact_service.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/services/contact_service.js')
-rw-r--r--js/services/contact_service.js23
1 files changed, 13 insertions, 10 deletions
diff --git a/js/services/contact_service.js b/js/services/contact_service.js
index 8a1b90c1..f23a7b78 100644
--- a/js/services/contact_service.js
+++ b/js/services/contact_service.js
@@ -36,7 +36,7 @@ angular.module('contactsApp')
var xhrAddressBooks = [];
contacts.forEach(function(contact) {
// Regroup urls by addressbooks
- if(addressBooks.indexOf(contact.data.addressBook) !== -1) {
+ if(addressBooks.indexOf(contact.addressBook) !== -1) {
// Initiate array if no exists
xhrAddressBooks[contact.addressBookId] = xhrAddressBooks[contact.addressBookId] || [];
xhrAddressBooks[contact.addressBookId].push(contact.data.url);
@@ -57,10 +57,11 @@ angular.module('contactsApp')
contacts_.map(function(contact) {
// Validate some fields
if(contact.fix()) {
- // Can't use this in those nested functions
+ // Can't use `this` in those nested functions
contactService.update(contact);
}
contactsCache.put(contact.uid(), contact);
+ addressBook.contacts.push(contact);
});
});
promises.push(promise);
@@ -281,11 +282,11 @@ angular.module('contactsApp')
}
};
- this.moveContact = function(contact, addressBook) {
- if (contact.addressBookId === addressBook.displayName) {
+ this.moveContact = function(contact, addressBook, oldAddressBook) {
+ if (addressBook !== null && contact.addressBookId === addressBook.displayName) {
return;
}
- if(addressBook.readOnly) {
+ if (addressBook.readOnly) {
OC.Notification.showTemporary(t('contacts', 'You don\'t have permission to write to this addressbook.'));
return;
}
@@ -297,6 +298,8 @@ angular.module('contactsApp')
).then(function(response) {
if (response.status === 201 || response.status === 204) {
contact.setAddressBook(addressBook);
+ oldAddressBook.removeContact(contact);
+ addressBook.addContact(contact);
} else {
OC.Notification.showTemporary(t('contacts', 'Contact could not be moved.'));
}
@@ -326,16 +329,15 @@ angular.module('contactsApp')
};
this.removeContactsFromAddressbook = function(addressBook, callback) {
- angular.forEach(contactsCache.values(), function(contact) {
- if (contact.addressBookId === addressBook.displayName) {
- contactsCache.remove(contact.uid());
- }
+ angular.forEach(addressBook.contacts, function(contact) {
+ contactsCache.remove(contact.uid());
});
callback();
notifyObservers('groupsUpdate');
};
this.appendContactsFromAddressbook = function(addressBook, callback) {
+ // Addressbook has been initiated but contacts have not been fetched
if (addressBook.objects === null) {
AddressBookService.sync(addressBook).then(function(addressBook) {
contactService.appendContactsFromAddressbook(addressBook, callback);
@@ -345,9 +347,10 @@ angular.module('contactsApp')
try {
var contact = new Contact(addressBook, vcard);
contactsCache.put(contact.uid(), contact);
+ addressBook.contacts.push(contact);
} catch(error) {
// eslint-disable-next-line no-console
- console.log('Invalid contact received: ', vcard);
+ console.log('Invalid contact received: ', vcard, error);
}
});
}