diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2018-09-24 15:27:29 +0200 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2018-09-25 14:53:27 +0200 |
commit | 905fb3c00259e9ec5f7035ce9585449c50cbbcee (patch) | |
tree | d9b2979929e8a5997bcb97b38dbf710ef1a5c6f0 | |
parent | 145babb087c1d827e2049a05dfcaa6535fb8c3ee (diff) |
Add addressbook dav
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r-- | src/components/Settings/SettingsNewAddressbook.vue | 13 | ||||
-rw-r--r-- | src/store/addressbooks.js | 33 |
2 files changed, 29 insertions, 17 deletions
diff --git a/src/components/Settings/SettingsNewAddressbook.vue b/src/components/Settings/SettingsNewAddressbook.vue index 9c1c66ac..db715aa7 100644 --- a/src/components/Settings/SettingsNewAddressbook.vue +++ b/src/components/Settings/SettingsNewAddressbook.vue @@ -24,10 +24,10 @@ <form id="new-addressbook-form" :disabled="loading" :class="{'icon-loading-small': loading}" name="new-addressbook-form" class="new-addressbook" @submit.prevent.stop="addAddressbook"> <input id="new-addressbook" ref="addressbook" v-model="displayName" - :disabled="loading" :placeholder="t('contacts', 'Address book name')" - class="new-addressbook-input" - type="text" autocomplete="off" autocorrect="off" - spellcheck="false" minlength="1" required> + :disabled="loading" :placeholder="t('contacts', 'Address book name')" :pattern="addressBookRegex" + class="new-addressbook-input" type="text" autocomplete="off" + autocorrect="off" spellcheck="false" minlength="1" + required> <input class="icon-confirm" type="submit" value=""> </form> </template> @@ -45,9 +45,10 @@ export default { }, data() { return { - // TODO: add pattern attribute to input, bind to addressBookRegex property loading: false, - displayName: '' + displayName: '', + // no slash!! + addressBookRegex: '[^\/]+' } }, methods: { diff --git a/src/store/addressbooks.js b/src/store/addressbooks.js index 59a8b64a..68be9067 100644 --- a/src/store/addressbooks.js +++ b/src/store/addressbooks.js @@ -42,6 +42,25 @@ const state = { addressbooks: [] } +/** + * map a dav collection to our addressbook object model + * + * @param {Object} addressbook + * @returns {Object} + */ +export function mapDavCollectionToAddressbook(addressbook) { + return { + // get last part of url + id: addressbook.url.split('/').slice(-2, -1)[0], + displayName: addressbook.displayname, + enabled: addressbook.enabled !== false, + owner: addressbook.owner, + readOnly: addressbook.readOnly !== false, + url: addressbook.url, + dav: addressbook + } +} + const mutations = { /** @@ -204,16 +223,7 @@ const actions = { let addressbooks = await client.addressBookHomes[0].findAllAddressBooks() .then(addressbooks => { return addressbooks.map(addressbook => { - return { - // get last part of url - id: addressbook.url.split('/').slice(-2, -1)[0], - displayName: addressbook.displayname, - enabled: addressbook.enabled !== false, - owner: addressbook.owner, - readOnly: addressbook.readOnly !== false, - url: addressbook.url, - dav: addressbook - } + return mapDavCollectionToAddressbook(addressbook) }) }) @@ -233,7 +243,8 @@ const actions = { appendAddressbook(context, addressbook) { return client.addressBookHomes[0].createAddressBookCollection(addressbook.displayName) .then((response) => { - console.log(response) + addressbook = mapDavCollectionToAddressbook(response) + console.log(response, addressbook) context.commit('addAddressbooks', addressbook) }) .catch((error) => { throw error }) |