summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2018-09-24 15:27:29 +0200
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2018-09-25 14:53:27 +0200
commit905fb3c00259e9ec5f7035ce9585449c50cbbcee (patch)
treed9b2979929e8a5997bcb97b38dbf710ef1a5c6f0 /src
parent145babb087c1d827e2049a05dfcaa6535fb8c3ee (diff)
Add addressbook dav
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/components/Settings/SettingsNewAddressbook.vue13
-rw-r--r--src/store/addressbooks.js33
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 })