From f66a8b888f8a1f0f50811ab7182bf133f55eb064 Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Tue, 25 Jan 2022 23:27:28 +0000 Subject: [PATCH] Handle unexpected errors during validation --- .../src/helpers/validation/yup/index.js | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/builder/src/helpers/validation/yup/index.js b/packages/builder/src/helpers/validation/yup/index.js index 08b8f5a56d..6783ad7e58 100644 --- a/packages/builder/src/helpers/validation/yup/index.js +++ b/packages/builder/src/helpers/validation/yup/index.js @@ -1,6 +1,7 @@ import { capitalise } from "helpers" import { object } from "yup" import { writable, get } from "svelte/store" +import { notifications } from "@budibase/bbui" export const createValidationStore = () => { const DEFAULT = { @@ -24,19 +25,26 @@ export const createValidationStore = () => { // clear the previous errors const properties = Object.keys(validator) properties.forEach(property => (get(validation).errors[property] = null)) + + let validationError = false try { await obj.validate(values, { abortEarly: false }) } catch (error) { - error.inner.forEach(err => { - validation.update(store => { - store.errors[err.path] = capitalise(err.message) - return store + if (!error.inner) { + notifications.error("Unexpected validation error", error) + validationError = true + } else { + error.inner.forEach(err => { + validation.update(store => { + store.errors[err.path] = capitalise(err.message) + return store + }) }) - }) + } } let valid - if (properties.length) { + if (properties.length && !validationError) { valid = await obj.isValid(values) } else { // don't say valid until validators have been loaded