diff --git a/frontend/src/data/document.js b/frontend/src/data/document.js index b8a7d911..8760ccbb 100644 --- a/frontend/src/data/document.js +++ b/frontend/src/data/document.js @@ -1,6 +1,6 @@ import { getScript } from '@/data/script' -import { runSequentially } from '@/utils' -import { createDocumentResource, toast } from 'frappe-ui' +import { runSequentially, parseAssignees } from '@/utils' +import { createDocumentResource, createResource, toast } from 'frappe-ui' import { reactive } from 'vue' const documentsCache = {} @@ -35,6 +35,17 @@ export function useDocument(doctype, docname) { } } + const assignees = createResource({ + url: 'crm.api.doc.get_assigned_users', + cache: `assignees:${doctype}:${docname}`, + auto: true, + params: { + doctype: doctype, + name: docname, + }, + transform: (data) => parseAssignees(data), + }) + async function setupFormScript() { if ( controllersCache[doctype] && @@ -177,6 +188,7 @@ export function useDocument(doctype, docname) { return { document: documentsCache[doctype][docname || ''], + assignees, triggerOnChange, triggerOnRowAdd, triggerOnRowRemove, diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index 924161dd..bf47bffd 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -221,6 +221,15 @@ export function setupAssignees(doc) { })) } +export function parseAssignees(assignees) { + let { getUser } = usersStore() + return assignees.map((user) => ({ + name: user, + image: getUser(user).user_image, + label: getUser(user).full_name, + })) +} + async function getFormScript(script, obj) { if (!script.includes('setupForm(')) return {} let scriptFn = new Function(script + '\nreturn setupForm')()