diff --git a/src/lib/helpers/prefs.ts b/src/lib/helpers/prefs.ts index 1a1451a4b0..850ae28c02 100644 --- a/src/lib/helpers/prefs.ts +++ b/src/lib/helpers/prefs.ts @@ -1,12 +1,19 @@ export type PrefRow = { key: string; value: string }; -export function normalizePrefs(entries: [string, string][] | PrefRow[]): [string, string][] { +function stringTrim(s: unknown): string { + return String(s ?? '').trim(); +} + +export function normalizePrefs( + entries: [string, unknown][] | PrefRow[] | { key: unknown; value: unknown }[] +): [string, string][] { return entries .map((item): [string, string] => - Array.isArray(item) ? [item[0], item[1]] : [item.key, item.value] + Array.isArray(item) + ? [String(item[0] ?? ''), String(item[1] ?? '')] + : [String(item.key ?? ''), String(item.value ?? '')] ) - - .filter(([k, v]) => k.trim() && v.trim()) + .filter(([k, v]) => stringTrim(k).length > 0 && stringTrim(v).length > 0) .sort(([a], [b]) => a.localeCompare(b)); } @@ -23,5 +30,5 @@ export function isAddDisabled(prefs: PrefRow[] | null): boolean { } export function sanitizePrefs(prefs: PrefRow[]) { - return prefs.filter((p) => p.key.trim() && p.value.trim()); + return prefs.filter((p) => stringTrim(p.key).length > 0 && stringTrim(p.value).length > 0); } diff --git a/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/updatePrefs.svelte b/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/updatePrefs.svelte index 3320b31e41..b384352490 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/updatePrefs.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/updatePrefs.svelte @@ -22,9 +22,7 @@ $: if (prefs) { const currentNormalized = normalizePrefs(prefs); - const originalNormalized = normalizePrefs( - Object.entries(($team?.prefs ?? {}) as Record) - ); + const originalNormalized = normalizePrefs(Object.entries($team?.prefs ?? {})); arePrefsDisabled = deepEqual(currentNormalized, originalNormalized); } @@ -33,10 +31,12 @@ let arePrefsDisabled = true; onMount(async () => { - const entries = Object.entries(($team?.prefs ?? {}) as Record); + const entries = Object.entries($team?.prefs ?? {}); prefs = entries.length > 0 - ? entries.map(([key, value]) => createPrefRow(key, value)) + ? entries.map(([key, value]) => + createPrefRow(String(key ?? ''), String(value ?? '')) + ) : [createPrefRow()]; }); diff --git a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/updatePrefs.svelte b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/updatePrefs.svelte index c3f6c54aab..932583f944 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/updatePrefs.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/updatePrefs.svelte @@ -34,7 +34,9 @@ const entries = Object.entries($user?.prefs ?? {}); prefs = entries.length > 0 - ? entries.map(([key, value]) => createPrefRow(key, value)) + ? entries.map(([key, value]) => + createPrefRow(String(key ?? ''), String(value ?? '')) + ) : [createPrefRow()]; });