From 0e177818cc30d938db563d1f026f652094ffa8d7 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Wed, 30 Jul 2025 12:50:35 +0530 Subject: [PATCH 01/17] fix: handle errors when creating document resources (cherry picked from commit ca5d82f5beb9395a88bbc576cc58911360b62b03) --- frontend/src/data/document.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/frontend/src/data/document.js b/frontend/src/data/document.js index 80d95255..5a970f20 100644 --- a/frontend/src/data/document.js +++ b/frontend/src/data/document.js @@ -3,23 +3,39 @@ import { globalStore } from '@/stores/global' import { showSettings, activeSettingsPage } from '@/composables/settings' import { runSequentially, parseAssignees } from '@/utils' import { createDocumentResource, createResource, toast } from 'frappe-ui' -import { reactive } from 'vue' +import { ref, reactive } from 'vue' const documentsCache = {} const controllersCache = {} const assigneesCache = {} export function useDocument(doctype, docname) { - const { setupScript } = getScript(doctype) + const { setupScript, scripts } = getScript(doctype) documentsCache[doctype] = documentsCache[doctype] || {} + const error = ref('') + if (!documentsCache[doctype][docname || '']) { if (docname) { documentsCache[doctype][docname] = createDocumentResource({ doctype: doctype, name: docname, onSuccess: async () => await setupFormScript(), + onError: (err) => { + error.value = err + if (err.exc_type === 'DoesNotExistError') { + toast.error(__(err.messages[0] || 'Document does not exist')) + } + if (err.exc_type === 'PermissionError') { + toast.error( + __( + err.messages[0] || + 'You do not have permission to access this document', + ), + ) + } + }, setValue: { onSuccess: () => { triggerOnSave() @@ -262,6 +278,8 @@ export function useDocument(doctype, docname) { return { document: documentsCache[doctype][docname || ''], assignees: assigneesCache[doctype][docname || ''], + scripts, + error, getControllers, triggerOnLoad, triggerOnBeforeCreate, From 971265d000815993f69845f4a37c0a5f698f3f20 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Wed, 30 Jul 2025 12:56:27 +0530 Subject: [PATCH 02/17] fix: use document.doc instead of lead.data/deal.data (cherry picked from commit 0144bc109a83f80e4349508001d1cb752707043c) # Conflicts: # frontend/src/pages/Deal.vue # frontend/src/pages/Lead.vue --- frontend/src/pages/Deal.vue | 168 ++++++++++++++++++++---------------- frontend/src/pages/Lead.vue | 151 ++++++++++++++++++-------------- frontend/src/utils/index.js | 17 ++-- 3 files changed, 186 insertions(+), 150 deletions(-) diff --git a/frontend/src/pages/Deal.vue b/frontend/src/pages/Deal.vue index 260aaa0d..49fa0fb5 100644 --- a/frontend/src/pages/Deal.vue +++ b/frontend/src/pages/Deal.vue @@ -1,5 +1,5 @@