mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-16 16:08:39 +00:00
* fix: check for bank account permission when updating balance * fix: add company to bank balance doctype
95 lines
2.8 KiB
TypeScript
95 lines
2.8 KiB
TypeScript
import { FrappeError } from "frappe-react-sdk"
|
|
|
|
interface ParsedErrorMessage {
|
|
message: string,
|
|
title?: string,
|
|
indicator?: string,
|
|
}
|
|
|
|
|
|
export const getErrorMessage = (error?: FrappeError | null): string => {
|
|
const messages = getErrorMessages(error)
|
|
return messages.map(m => m.message).join('\n')
|
|
}
|
|
|
|
/**
|
|
* Standard function to parse the error messages from the FrappeError object
|
|
* @param error The FrappeError object to parse
|
|
* @returns An array of ParsedErrorMessage objects
|
|
*/
|
|
export const getErrorMessages = (error?: FrappeError | null): ParsedErrorMessage[] => {
|
|
if (!error) return []
|
|
let eMessages: ParsedErrorMessage[] = error?._server_messages ? JSON.parse(error?._server_messages) : []
|
|
eMessages = eMessages.map((m) => {
|
|
try {
|
|
|
|
// @ts-expect-error - it can sometimes be a string
|
|
return JSON.parse(m)
|
|
|
|
}
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
catch (e) {
|
|
return m
|
|
}
|
|
})
|
|
|
|
// @ts-expect-error - some errors have _error_message
|
|
if (error?._error_message) {
|
|
eMessages.push({
|
|
// @ts-expect-error - some errors have _error_message
|
|
message: error?._error_message,
|
|
title: "Error",
|
|
indicator: "red"
|
|
})
|
|
}
|
|
|
|
if (eMessages.length === 0) {
|
|
// Get the message from the exception by removing the exc_type
|
|
const indexOfFirstColon = error?.exception?.indexOf(':')
|
|
if (indexOfFirstColon) {
|
|
const exception = error?.exception?.slice(indexOfFirstColon + 1)
|
|
if (exception) {
|
|
eMessages = [{
|
|
message: exception,
|
|
title: "Error"
|
|
}]
|
|
}
|
|
}
|
|
|
|
if (eMessages.length === 0) {
|
|
eMessages = [{
|
|
message: error?.message,
|
|
title: "Error",
|
|
indicator: "red"
|
|
}]
|
|
}
|
|
}
|
|
return eMessages
|
|
|
|
}
|
|
|
|
export const slug = (name?: string) => {
|
|
return name?.toLowerCase().replace(/ /g, "-") ?? "";
|
|
}
|
|
|
|
export const scrub = (txt?: string) => {
|
|
return (txt || "").replace(/ /g, "_").toLowerCase(); // use
|
|
}
|
|
|
|
export const unscrub = (txt?: string) => {
|
|
return (txt || "").replace(/-|_/g, " ").replace(/\w*/g, function (keywords) {
|
|
return keywords.charAt(0).toUpperCase() + keywords.substring(1).toLowerCase();
|
|
});
|
|
}
|
|
|
|
export const getSystemDefault = (fieldName: string, fallback?: string) => {
|
|
return window.frappe?.boot?.sysdefaults?.[fieldName] ?? fallback
|
|
}
|
|
|
|
export const getUserDefault = (fieldName: string, fallback?: string) => {
|
|
return window.frappe?.boot?.user?.defaults?.[fieldName] ?? fallback
|
|
}
|
|
|
|
export const getBootFieldData = (fieldName: string, fallback?: string) => {
|
|
return window.frappe?.boot?.[fieldName] ?? fallback
|
|
} |