From 0a49061549275227681da8bd20a0d886e56be7aa Mon Sep 17 00:00:00 2001 From: dswbx Date: Wed, 9 Jul 2025 08:48:05 +0200 Subject: [PATCH] fix schema updates with falsy values --- app/package.json | 2 +- app/src/modules/server/SystemController.ts | 8 +++++++- app/src/ui/components/form/json-schema-form/utils.ts | 7 +++++-- app/src/ui/routes/auth/auth.strategies.tsx | 2 +- bun.lock | 4 ++-- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/package.json b/app/package.json index dccc461e..42b3074c 100644 --- a/app/package.json +++ b/app/package.json @@ -99,7 +99,7 @@ "dotenv": "^16.4.7", "jotai": "^2.12.2", "jsdom": "^26.0.0", - "jsonv-ts": "^0.2.3", + "jsonv-ts": "^0.2.4", "kysely-d1": "^0.3.0", "kysely-generic-sqlite": "^1.2.1", "libsql-stateless-easy": "^1.8.0", diff --git a/app/src/modules/server/SystemController.ts b/app/src/modules/server/SystemController.ts index 41d4fdca..f9fdcab9 100644 --- a/app/src/modules/server/SystemController.ts +++ b/app/src/modules/server/SystemController.ts @@ -1,7 +1,13 @@ /// import type { App } from "App"; -import { datetimeStringLocal, datetimeStringUTC, getTimezone, getTimezoneOffset, $console } from "core/utils"; +import { + datetimeStringLocal, + datetimeStringUTC, + getTimezone, + getTimezoneOffset, + $console, +} from "core/utils"; import { getRuntimeKey } from "core/utils"; import type { Context, Hono } from "hono"; import { Controller } from "modules/Controller"; diff --git a/app/src/ui/components/form/json-schema-form/utils.ts b/app/src/ui/components/form/json-schema-form/utils.ts index 00f8caf3..81b4a928 100644 --- a/app/src/ui/components/form/json-schema-form/utils.ts +++ b/app/src/ui/components/form/json-schema-form/utils.ts @@ -4,10 +4,13 @@ import type { JSONSchema } from "json-schema-to-ts"; import type { JSONSchemaType } from "json-schema-to-ts/lib/types/definitions/jsonSchema"; export { isEqual, getPath } from "core/utils/objects"; -//export { isEqual } from "lodash-es"; + +export function isNotDefined(value: any) { + return value === null || value === undefined || value === ""; +} export function coerce(value: any, schema: JsonSchema, opts?: { required?: boolean }) { - if (!value && typeof opts?.required === "boolean" && !opts.required) { + if (isNotDefined(value) && typeof opts?.required === "boolean" && !opts.required) { return undefined; } diff --git a/app/src/ui/routes/auth/auth.strategies.tsx b/app/src/ui/routes/auth/auth.strategies.tsx index 2aa0c4f9..f4b03620 100644 --- a/app/src/ui/routes/auth/auth.strategies.tsx +++ b/app/src/ui/routes/auth/auth.strategies.tsx @@ -76,7 +76,7 @@ function AuthStrategiesListInternal() { return (