diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2020-07-24 10:56:59 +0200 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2020-08-21 10:05:42 +0200 |
commit | d3f883752f24ab3661c77d78b10b62dc0b2d2414 (patch) | |
tree | 393371c96a4e4409d0d08eb0d89274ec6a1de181 /src/views | |
parent | 68cb27a5b4ef0eecd7a0af597d3050bc709c5754 (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.vue | 33 |
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 }, |