fix: handle errors when creating document resources
This commit is contained in:
parent
5e19a83f8a
commit
ca5d82f5be
@ -3,23 +3,39 @@ import { globalStore } from '@/stores/global'
|
|||||||
import { showSettings, activeSettingsPage } from '@/composables/settings'
|
import { showSettings, activeSettingsPage } from '@/composables/settings'
|
||||||
import { runSequentially, parseAssignees } from '@/utils'
|
import { runSequentially, parseAssignees } from '@/utils'
|
||||||
import { createDocumentResource, createResource, toast } from 'frappe-ui'
|
import { createDocumentResource, createResource, toast } from 'frappe-ui'
|
||||||
import { reactive } from 'vue'
|
import { ref, reactive } from 'vue'
|
||||||
|
|
||||||
const documentsCache = {}
|
const documentsCache = {}
|
||||||
const controllersCache = {}
|
const controllersCache = {}
|
||||||
const assigneesCache = {}
|
const assigneesCache = {}
|
||||||
|
|
||||||
export function useDocument(doctype, docname) {
|
export function useDocument(doctype, docname) {
|
||||||
const { setupScript } = getScript(doctype)
|
const { setupScript, scripts } = getScript(doctype)
|
||||||
|
|
||||||
documentsCache[doctype] = documentsCache[doctype] || {}
|
documentsCache[doctype] = documentsCache[doctype] || {}
|
||||||
|
|
||||||
|
const error = ref('')
|
||||||
|
|
||||||
if (!documentsCache[doctype][docname || '']) {
|
if (!documentsCache[doctype][docname || '']) {
|
||||||
if (docname) {
|
if (docname) {
|
||||||
documentsCache[doctype][docname] = createDocumentResource({
|
documentsCache[doctype][docname] = createDocumentResource({
|
||||||
doctype: doctype,
|
doctype: doctype,
|
||||||
name: docname,
|
name: docname,
|
||||||
onSuccess: async () => await setupFormScript(),
|
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: {
|
setValue: {
|
||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
triggerOnSave()
|
triggerOnSave()
|
||||||
@ -262,6 +278,8 @@ export function useDocument(doctype, docname) {
|
|||||||
return {
|
return {
|
||||||
document: documentsCache[doctype][docname || ''],
|
document: documentsCache[doctype][docname || ''],
|
||||||
assignees: assigneesCache[doctype][docname || ''],
|
assignees: assigneesCache[doctype][docname || ''],
|
||||||
|
scripts,
|
||||||
|
error,
|
||||||
getControllers,
|
getControllers,
|
||||||
triggerOnLoad,
|
triggerOnLoad,
|
||||||
triggerOnBeforeCreate,
|
triggerOnBeforeCreate,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user