From c323c01e7b023ad3e86bca283f5bcfabd0daec05 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 21 Jan 2026 21:18:09 +0530 Subject: [PATCH] updated with suggestions added helpers and fixed errors --- src/lib/helpers/prefs.ts | 29 +++++++++++ .../auth/teams/team-[team]/updatePrefs.svelte | 52 +++++++------------ .../auth/user-[user]/updatePrefs.svelte | 48 ++++++----------- 3 files changed, 66 insertions(+), 63 deletions(-) create mode 100644 src/lib/helpers/prefs.ts diff --git a/src/lib/helpers/prefs.ts b/src/lib/helpers/prefs.ts new file mode 100644 index 000000000..5c684458f --- /dev/null +++ b/src/lib/helpers/prefs.ts @@ -0,0 +1,29 @@ +export type PrefRow = { key: string; value: string }; + +export function normalizePrefs(entries: [string, string][] | PrefRow[]): [string, string][] { + return entries + .map((item): [string, string] => + Array.isArray(item) + ? [item[0], item[1]] + : [item.key, item.value] + ) + + .filter(([k, v]) => k.trim() && v.trim()) + .sort(([a], [b]) => a.localeCompare(b)); +} + +export function createPrefRow(key = '', value = ''): PrefRow { + return { key, value }; +} + +export function isAddDisabled(prefs: PrefRow[] | null): boolean { + return ( + !!prefs && + prefs.length > 0 && + !(prefs[prefs.length - 1].key && prefs[prefs.length - 1].value) + ); +} + +export function sanitizePrefs(prefs: PrefRow[]) { + return prefs.filter((p) => p.key.trim() && p.value.trim()); +} 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 678cfe2ab..c2a2fc94e 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 @@ -12,19 +12,15 @@ import { IconPlus } from '@appwrite.io/pink-icons-svelte'; import { page } from '$app/state'; import deepEqual from 'deep-equal'; + import type { PrefRow } from '$lib/helpers/prefs'; + import { normalizePrefs, createPrefRow, isAddDisabled, sanitizePrefs } from '$lib/helpers/prefs'; - type PrefRow = { key: string; value: string }; - - function normalize(entries: [string, string][] | PrefRow[]): [string, string][] { - return entries - .map(item => Array.isArray(item) ? item : [item.key, item.value]) - .filter(([k, v]: [string, string]) => k.trim() && v.trim()) - .sort(([a]: [string, string], [b]: [string, string]) => a.localeCompare(b)); - } $: if (prefs) { - const currentNormalized = normalize(prefs); - const originalNormalized = normalize(Object.entries($team.prefs as Record)); + const currentNormalized = normalizePrefs(prefs); + const originalNormalized = normalizePrefs( + Object.entries($team.prefs as Record) + ); arePrefsDisabled = deepEqual(currentNormalized, originalNormalized); } @@ -32,26 +28,22 @@ let prefs: PrefRow[] = null; let arePrefsDisabled = true; - function createPrefRow(key = '', value = ''): PrefRow { - return {key, value }; - } - onMount(async () => { const entries = Object.entries($team.prefs as Record); - prefs = entries.length > 0 - ? entries.map(([key, value]) => createPrefRow(key, value)) - : [createPrefRow()]; + prefs = + entries.length > 0 + ? entries.map(([key, value]) => createPrefRow(key, value)) + : [createPrefRow()]; }); async function updatePrefs() { try { - const sanitizedPrefs = prefs.filter( - pref => pref.key.trim() !== '' && pref.value.trim() !== '' - ); + const sanitizedPrefs = sanitizePrefs(prefs); - const updatedPrefs = sanitizedPrefs.length === 0 - ? {} - : Object.fromEntries(sanitizedPrefs.map(pref => [pref.key, pref.value])); + const updatedPrefs = + sanitizedPrefs.length === 0 + ? {} + : Object.fromEntries(sanitizedPrefs.map((pref) => [pref.key, pref.value])); await sdk .forProject(page.params.region, page.params.project) @@ -87,7 +79,7 @@ id={`key-${index}`} value={pref.key} on:input={(e) => { - prefs[index].key = e.target.value; + prefs[index].key = (e.target as HTMLInputElement).value; prefs = [...prefs]; }} placeholder="Enter key" @@ -98,7 +90,7 @@ id={`value-${index}`} value={pref.value} on:input={(e) => { - prefs[index].value = e.target.value; + prefs[index].value = (e.target as HTMLInputElement).value; prefs = [...prefs]; }} placeholder="Enter value" @@ -109,7 +101,7 @@ compact disabled={(!pref.key || !pref.value) && index === 0} on:click={() => { - prefs.splice(index, 1); + prefs.splice(index, 1); prefs = [...prefs]; }}> @@ -121,12 +113,8 @@