diff --git a/src/lib/EnvelopeEditor.svelte b/src/lib/EnvelopeEditor.svelte index da341b7..b33b329 100644 --- a/src/lib/EnvelopeEditor.svelte +++ b/src/lib/EnvelopeEditor.svelte @@ -216,6 +216,16 @@ const result = await actions.sign(builderContext); dispatch("sign", result); + + // There is no need to set the state here as it is + // handled by setState watcher. We return the value + // to inform external caller + if (result?.error) { + displayAllErrors(result?.error?.message || ""); + return "errored"; + } + + return "signed" }; export const validate = async () => { diff --git a/src/lib/editor/code/EditorCode.svelte b/src/lib/editor/code/EditorCode.svelte index 91c8a6b..1cca684 100644 --- a/src/lib/editor/code/EditorCode.svelte +++ b/src/lib/editor/code/EditorCode.svelte @@ -13,7 +13,7 @@ import SuccessIcon from "$lib/ui/icons/SuccessIcon.svelte"; import LightbulbIcon from "$lib/ui/icons/LightbulbIcon.svelte"; import { getBuilderContext } from "$lib/store/builder.js"; - import { getErrorString } from "$lib/helpers"; + import { getGOBLErrorMessage } from "$lib/helpers"; let monaco: typeof Monaco; @@ -137,10 +137,7 @@ return; } - const parsedError = JSON.parse(goblErr.message); - - const errorString = - parsedError.key === "validation" ? getErrorString(parsedError.fields?.doc) : parsedError.message; + const errorString = getGOBLErrorMessage(goblErr.message); const errorsArr = errorString.split(" / "); diff --git a/src/lib/helpers.ts b/src/lib/helpers.ts index aef0453..64273d6 100644 --- a/src/lib/helpers.ts +++ b/src/lib/helpers.ts @@ -66,9 +66,18 @@ export function showErrorToast(description: string) { }); } +export function getGOBLErrorMessage(message: string) { + const parsedError = JSON.parse(message); + + return parsedError.key === "validation" + ? getErrorString(parsedError.fields?.doc) + : parsedError.key === "calculation" + ? getErrorString(parsedError.fields) + : parsedError.message; +} + export async function displayAllErrors(error: string) { - const parsedError = JSON.parse(error); - const errorMessage = parsedError.key === "validation" ? getErrorString(parsedError.fields?.doc) : parsedError.message; + const errorMessage = getGOBLErrorMessage(error); const errorsArr = errorMessage.split(" / "); for (let i = 0; i < errorsArr.length; i++) {