summaryrefslogtreecommitdiffstats
path: root/src/views
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2020-07-24 10:56:59 +0200
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2020-08-21 10:05:42 +0200
commitd3f883752f24ab3661c77d78b10b62dc0b2d2414 (patch)
tree393371c96a4e4409d0d08eb0d89274ec6a1de181 /src/views
parent68cb27a5b4ef0eecd7a0af597d3050bc709c5754 (diff)
Improve performance, sort contacts, exclude read-only and exclude already selected ones
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Diffstat (limited to 'src/views')
-rw-r--r--src/views/Contacts.vue33
1 files changed, 19 insertions, 14 deletions
diff --git a/src/views/Contacts.vue b/src/views/Contacts.vue
index 5e1db112..f4141314 100644
--- a/src/views/Contacts.vue
+++ b/src/views/Contacts.vue
@@ -285,7 +285,6 @@ export default {
// Create group
isCreatingGroup: false,
isNewGroupMenuOpen: false,
- loading: true,
createGroupError: null,
// Add to group picker
@@ -294,7 +293,7 @@ export default {
contactPickerforGroup: null,
pickerTypes: [{
id: 'contact',
- label: t('contacts', 'contacts'),
+ label: t('contacts', 'Contacts'),
}],
// Bulk processing
@@ -395,18 +394,6 @@ export default {
recentlyContactedContacts() {
return this.groups.find(group => group.name === t('contactsinteraction', 'Recently contacted'))
},
-
- /**
- * Contacts formatted for the EntityPicker
- * @returns {Array}
- */
- pickerData() {
- return Object.values(this.contacts).map(contact => ({
- id: contact.key,
- label: contact.displayName,
- type: 'contact',
- }))
- },
},
watch: {
@@ -689,11 +676,29 @@ export default {
}
}
+ // Init data set
+ this.pickerData = this.sortedContacts
+ .map(({ key }) => {
+ const contact = this.contacts[key]
+ return {
+ id: contact.key,
+ label: contact.displayName,
+ type: 'contact',
+ readOnly: contact.addressbook.readOnly,
+ groups: contact.groups,
+ }
+ })
+ // No read only contacts
+ .filter(contact => !contact.readOnly)
+ // No contacts already present in group
+ .filter(contact => contact.groups.indexOf(group.name) === -1)
+
this.showContactPicker = true
this.contactPickerforGroup = group
},
onContactPickerClose() {
+ this.pickerData = []
this.showContactPicker = false
},