import { appInterface } from 'core/libs' import verbosity from 'core/libs/verbosity' import errStrings from 'config/handlers/errToStrings.js' import errNumbers from 'config/handlers/numToError.js' import errFlags from 'config/handlers/errToFlag.js' import flagToBehavior from 'config/handlers/flagToBehavior.js' const flagToString = { CRITICAL: "An critical exception", DISRUPT: "An wild error appears!", IGNORE: "Warning" } export function notifyErrorHandler(params) { if (!params) { return false } appInterface.notify.open({ message: flagToString[params.flag] ?? "Unexpected Error", description:
{params.msg ?? "No exception message"}
=> {errStrings[params.out] ?? "Unhandled Exception"} | { params.out?? "UNDEFINED_KEY" }
, }) } export function ErrorHandler(payload, callback){ if (!payload) { return false } const flags = ["CRITICAL", "DISRUPT", "IGNORE"] let flag = null let out = null const { msg, outFlag, code } = payload if (!out && code != null) { // This give priority to resolve with `code` than `outFlag` out = errNumbers[code] } if (!out && outFlag != null ) { out = outFlag } if (out && typeof(errStrings[out]) !== "undefined") { verbosity(msg, {type: "error"}) flag = errFlags[out] }else{ console.log("(Aborted) no out key | or invalid flag => ", out) return false } switch (flag) { case flags[0]: notifyErrorHandler({ msg, out, flag }) flagToBehavior[out]({ msg, out, flag, code }) return false case flags[1]: flagToBehavior[out]({ msg, out, flag, code }) return false case flags[2]: flagToBehavior[out]({ msg, out, flag, code }) return false default: console.log('Invalid FLAG') break; } } export default ErrorHandler