From 5a2b5001009ba8273a9044a678b31931fe49da96 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Mon, 25 Jul 2022 18:31:12 +0530 Subject: [PATCH] fix(UX): mentions - prioritize invovled users --- .../public/js/frappe/form/controls/text_editor.js | 14 +++++++++++++- frappe/public/js/frappe/form/form.js | 4 ++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/frappe/public/js/frappe/form/controls/text_editor.js b/frappe/public/js/frappe/form/controls/text_editor.js index 50b625f248..be0983fc73 100644 --- a/frappe/public/js/frappe/form/controls/text_editor.js +++ b/frappe/public/js/frappe/form/controls/text_editor.js @@ -195,7 +195,9 @@ frappe.ui.form.ControlTextEditor = class ControlTextEditor extends frappe.ui.for let values = await frappe.xcall(method, { search_term }); - renderList(values, search_term); + + let sorted_values = me.prioritize_involved_users_in_mention(values); + renderList(sorted_values, search_term); }, 300), renderItem(item) { let value = item.value; @@ -204,6 +206,16 @@ frappe.ui.form.ControlTextEditor = class ControlTextEditor extends frappe.ui.for }; } + prioritize_involved_users_in_mention(values) { + const involved_users = this.frm?.get_involved_users() // input on form + || cur_frm?.get_involved_users() // comment box / dialog on active form + || []; + + return values + .filter(val => involved_users.includes(val.id)) + .concat(values.filter(val => !involved_users.includes(val.id))); + } + get_toolbar_options() { return [ [{ header: [1, 2, 3, false] }], diff --git a/frappe/public/js/frappe/form/form.js b/frappe/public/js/frappe/form/form.js index 854a1723d9..ea37c80e5e 100644 --- a/frappe/public/js/frappe/form/form.js +++ b/frappe/public/js/frappe/form/form.js @@ -1875,11 +1875,11 @@ frappe.ui.form.Form = class FrappeForm { } get_involved_users() { - const user_fields = this.meta.fields + let user_fields = this.meta.fields .filter(d => d.fieldtype === 'Link' && d.options === 'User') .map(d => d.fieldname); - user_fields.push('owner'); + user_fields = [...user_fields, "owner", "modified_by"]; let involved_users = user_fields.map(field => this.doc[field]); const docinfo = this.get_docinfo();