Files
ComfyUI-Model-Manager/src/hooks/toast.ts
2024-11-11 11:39:32 +08:00

46 lines
1.1 KiB
TypeScript

import { ToastServiceMethods } from 'primevue/toastservice'
import { useConfirm as usePrimeConfirm } from 'primevue/useconfirm'
import { useToast as usePrimeToast } from 'primevue/usetoast'
export const globalToast = { value: null } as unknown as {
value: ToastServiceMethods
}
export const useToast = () => {
const toast = usePrimeToast()
const confirm = usePrimeConfirm()
globalToast.value = toast
const wrapperToastError = <T extends CallableFunction>(callback: T): T => {
const showToast = (error: Error) => {
toast.add({
severity: 'error',
summary: 'Error',
detail: error.message,
life: 15000,
})
}
const isAsync = callback.constructor.name === 'AsyncFunction'
let wrapperExec: any
if (isAsync) {
wrapperExec = (...args: any[]) => callback(...args).catch(showToast)
} else {
wrapperExec = (...args: any[]) => {
try {
return callback(...args)
} catch (error) {
showToast(error)
}
}
}
return wrapperExec
}
return { toast, wrapperToastError, confirm }
}