summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2017-10-29 05:57:53 +0100
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2017-11-21 15:55:04 +0100
commit3a61e22ba6d7f9dedc6bd19ae8e87b1acd90a25b (patch)
tree8ee87aebfe05812497332a3615d9d6ca3978d1aa
parent4cc212be06530e23df1b5a7575d82f7dfde4780a (diff)
Store state in db
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r--js/components/addressBook/addressBook_controller.js2
-rw-r--r--js/dav/dav.js2
-rw-r--r--js/dav/lib/contacts.js3
-rw-r--r--js/models/addressBook_model.js6
-rw-r--r--js/services/addressBook_service.js37
-rw-r--r--templates/contactList.html2
6 files changed, 38 insertions, 14 deletions
diff --git a/js/components/addressBook/addressBook_controller.js b/js/components/addressBook/addressBook_controller.js
index 08020b7f..e0209659 100644
--- a/js/components/addressBook/addressBook_controller.js
+++ b/js/components/addressBook/addressBook_controller.js
@@ -193,7 +193,7 @@ angular.module('contactsApp')
};
ctrl.toggleState = function() {
- ctrl.enabled = AddressBookService.toggleState(ctrl.addressBook);
+ ctrl.enabled = AddressBookService.toggleState(ctrl.addressBook).enabled;
};
});
diff --git a/js/dav/dav.js b/js/dav/dav.js
index 7dca8192..51fffb4a 100644
--- a/js/dav/dav.js
+++ b/js/dav/dav.js
@@ -1620,7 +1620,7 @@ var listAddressBooks = _co2['default'].wrap(regeneratorRuntime.mark(function cal
req = request.propfind({
props: [{ name: 'displayname', namespace: ns.DAV }, { name: 'owner', namespace: ns.DAV }, { name: 'getctag', namespace: ns.CALENDAR_SERVER }, { name: 'resourcetype', namespace: ns.DAV }, { name: 'sync-token', namespace: ns.DAV }, { name: 'read-only', namespace: ns.OC },
//{ name: 'groups', namespace: ns.OC },
- { name: 'invite', namespace: ns.OC }],
+ { name: 'invite', namespace: ns.OC }, { name: 'enabled', namespace: ns.OC }],
depth: 1
});
context$1$0.next = 4;
diff --git a/js/dav/lib/contacts.js b/js/dav/lib/contacts.js
index d5d9669d..c3779864 100644
--- a/js/dav/lib/contacts.js
+++ b/js/dav/lib/contacts.js
@@ -23,7 +23,8 @@ export let listAddressBooks = co.wrap(function *(account, options) {
{ name: 'sync-token', namespace: ns.DAV },
{ name: 'read-only', namespace: ns.OC },
//{ name: 'groups', namespace: ns.OC },
- { name: 'invite', namespace: ns.OC }
+ { name: 'invite', namespace: ns.OC },
+ { name: 'enabled', namespace: ns.OC }
],
depth: 1
});
diff --git a/js/models/addressBook_model.js b/js/models/addressBook_model.js
index fde62d67..6e3f05e3 100644
--- a/js/models/addressBook_model.js
+++ b/js/models/addressBook_model.js
@@ -2,16 +2,14 @@ angular.module('contactsApp')
.factory('AddressBook', function()
{
return function AddressBook(data) {
- var storageKey = btoa(data.data.href.split('/').splice(-3, 2).join('_'));
angular.extend(this, {
displayName: '',
contacts: [],
groups: data.data.props.groups,
readOnly: data.data.props.readOnly === '1',
- // use only owner and url, convert ''/remote.php/dav/addressbooks/users/admin/Test1/'' to 'admin.Test'
- key: storageKey,
- enabled: window.localStorage.getItem('contacts_ab_'+storageKey) !== 'false',
+ // In case of not defined
+ enabled: data.data.props.enabled !== '0',
sharedWith: {
users: [],
diff --git a/js/services/addressBook_service.js b/js/services/addressBook_service.js
index 9a47badd..f021d6e6 100644
--- a/js/services/addressBook_service.js
+++ b/js/services/addressBook_service.js
@@ -89,12 +89,6 @@ angular.module('contactsApp')
});
},
- toggleState: function(addressBook) {
- window.localStorage.setItem('contacts_ab_'+addressBook.key, !addressBook.enabled);
- notifyObservers('toggleState');
- return !addressBook.enabled;
- },
-
rename: function(addressBook, displayName) {
return DavService.then(function(account) {
return DavClient.renameAddressBook(addressBook, {displayName:displayName, url:account.homeUrl});
@@ -113,6 +107,37 @@ angular.module('contactsApp')
return DavClient.syncAddressBook(addressBook);
},
+
+ toggleState: function(addressBook) {
+ var xmlDoc = document.implementation.createDocument('', '', null);
+ var dPropUpdate = xmlDoc.createElement('d:propertyupdate');
+ dPropUpdate.setAttribute('xmlns:d', 'DAV:');
+ dPropUpdate.setAttribute('xmlns:o', 'http://owncloud.org/ns');
+ xmlDoc.appendChild(dPropUpdate);
+
+ var dSet = xmlDoc.createElement('d:set');
+ dPropUpdate.appendChild(dSet);
+
+ var dProp = xmlDoc.createElement('d:prop');
+ dSet.appendChild(dProp);
+
+ var oEnabled = xmlDoc.createElement('o:enabled');
+ oEnabled.textContent = !addressBook.enabled ? '1' : '0';
+ dProp.appendChild(oEnabled);
+
+ var body = dPropUpdate.outerHTML;
+
+ return DavClient.xhr.send(
+ dav.request.basic({method: 'PROPPATCH', data: body}),
+ addressBook.url
+ ).then(function(response) {
+ if (response.status === 200) {
+ addressBook.enabled = !addressBook.enabled;
+ }
+ return addressBook;
+ });
+ },
+
share: function(addressBook, shareType, shareWith, writable, existingShare) {
var xmlDoc = document.implementation.createDocument('', '', null);
var oShare = xmlDoc.createElement('o:share');
diff --git a/templates/contactList.html b/templates/contactList.html
index c41dffb2..1cac2f0d 100644
--- a/templates/contactList.html
+++ b/templates/contactList.html
@@ -1,6 +1,6 @@
<div class="contacts-list" ng-class="{loading: ctrl.loading, 'mobile-show': ctrl.show}">
<div class="app-content-list-item"
- ng-repeat="contact in ctrl.filteredContacts = (ctrl.contactList | filter:{'data':{'addressBook':{'enabled': true}}} | contactGroupFilter:ctrl.routeParams.gid | localeOrderBy:ctrl.sortBy | filter:query | limitTo:ctrl.limitTo) as filtered track by contact.uid()"
+ ng-repeat="contact in ctrl.filteredContacts = (ctrl.contactList | contactGroupFilter:ctrl.routeParams.gid | localeOrderBy:ctrl.sortBy | filter:query | limitTo:ctrl.limitTo) as filtered track by contact.uid()"
contact data="contact"
ng-click="setSelected(contact.uid())"
ng-class="{active: contact.uid() === ctrl.getSelectedId()}">