fix: handle errors when creating document resources

This commit is contained in:
Shariq Ansari 2025-07-30 12:50:35 +05:30
parent 5e19a83f8a
commit ca5d82f5be

View File

@ -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,