Handle unexpected errors during validation

This commit is contained in:
Rory Powell 2022-01-25 23:27:28 +00:00
parent 9db180b166
commit f66a8b888f
1 changed files with 14 additions and 6 deletions

View File

@ -1,6 +1,7 @@
import { capitalise } from "helpers" import { capitalise } from "helpers"
import { object } from "yup" import { object } from "yup"
import { writable, get } from "svelte/store" import { writable, get } from "svelte/store"
import { notifications } from "@budibase/bbui"
export const createValidationStore = () => { export const createValidationStore = () => {
const DEFAULT = { const DEFAULT = {
@ -24,19 +25,26 @@ export const createValidationStore = () => {
// clear the previous errors // clear the previous errors
const properties = Object.keys(validator) const properties = Object.keys(validator)
properties.forEach(property => (get(validation).errors[property] = null)) properties.forEach(property => (get(validation).errors[property] = null))
let validationError = false
try { try {
await obj.validate(values, { abortEarly: false }) await obj.validate(values, { abortEarly: false })
} catch (error) { } catch (error) {
error.inner.forEach(err => { if (!error.inner) {
validation.update(store => { notifications.error("Unexpected validation error", error)
store.errors[err.path] = capitalise(err.message) validationError = true
return store } else {
error.inner.forEach(err => {
validation.update(store => {
store.errors[err.path] = capitalise(err.message)
return store
})
}) })
}) }
} }
let valid let valid
if (properties.length) { if (properties.length && !validationError) {
valid = await obj.isValid(values) valid = await obj.isValid(values)
} else { } else {
// don't say valid until validators have been loaded // don't say valid until validators have been loaded