From 27ccbee82dd88293d1648ecac0fa01ae5d18fa19 Mon Sep 17 00:00:00 2001 From: Mees Frensel <33722705+meesfrensel@users.noreply.github.com> Date: Tue, 27 Oct 2026 15:41:59 +0100 Subject: [PATCH] refactor(web): use svelte builtin id generator (#32631) (cherry picked from commit 285552785f1bd7cb5ad431c8b3423d1d5e858188) --- .../lib/components/shared-components/Combobox.svelte | 6 +----- .../shared-components/CoordinatesInput.svelte | 3 +-- .../context-menu/ButtonContextMenu.svelte | 3 +-- .../shared-components/context-menu/MenuOption.svelte | 6 ++---- .../shared-components/search-bar/SearchBar.svelte | 5 +---- .../shared-components/settings/SettingSwitch.svelte | 12 +++++------- web/src/lib/elements/GroupTab.svelte | 6 ++---- web/src/lib/elements/StarRating.svelte | 9 ++++----- web/src/lib/utils/generate-id.ts | 2 -- .../(user)/workflows/[workflowId]/+page.svelte | 4 +++- 10 files changed, 20 insertions(+), 36 deletions(-) delete mode 100644 web/src/lib/utils/generate-id.ts diff --git a/web/src/lib/components/shared-components/Combobox.svelte b/web/src/lib/components/shared-components/Combobox.svelte index 5db911fd5..d105b49e2 100644 --- a/web/src/lib/components/shared-components/Combobox.svelte +++ b/web/src/lib/components/shared-components/Combobox.svelte @@ -22,7 +22,6 @@
diff --git a/web/src/lib/elements/GroupTab.svelte b/web/src/lib/elements/GroupTab.svelte index 9e45805eb..8c75174e0 100644 --- a/web/src/lib/elements/GroupTab.svelte +++ b/web/src/lib/elements/GroupTab.svelte @@ -1,6 +1,4 @@
import { focusOutside } from '#lib/actions/focus-outside.ts'; import { shortcuts } from '#lib/actions/shortcut.ts'; - import { generateId } from '#lib/utils/generate-id.ts'; import { Icon } from '@immich/ui'; import { mdiStar, mdiStarOutline } from '@mdi/js'; import { t } from 'svelte-i18n'; export type Rating = -1 | 1 | 2 | 3 | 4 | 5 | null; - interface Props { + type Props = { count?: number; rating: Rating; readOnly?: boolean; onRating: (rating: Rating) => void | undefined; - } + }; - let { count = 5, rating, readOnly = false, onRating }: Props = $props(); + const { count = 5, rating, readOnly = false, onRating }: Props = $props(); let ratingSelection = $derived(rating); let hoverRating: Rating = $state(null); let focusRating: Rating = $state(null); let timeoutId: ReturnType | undefined; - const id = generateId(); + const id = $props.id(); const handleSelect = (newRating: Rating) => { if (readOnly) { diff --git a/web/src/lib/utils/generate-id.ts b/web/src/lib/utils/generate-id.ts deleted file mode 100644 index 466be1840..000000000 --- a/web/src/lib/utils/generate-id.ts +++ /dev/null @@ -1,2 +0,0 @@ -let _count = 0; -export const generateId = (): string => `id-${_count++}`; diff --git a/web/src/routes/(user)/workflows/[workflowId]/+page.svelte b/web/src/routes/(user)/workflows/[workflowId]/+page.svelte index 982435126..cb25a19d4 100644 --- a/web/src/routes/(user)/workflows/[workflowId]/+page.svelte +++ b/web/src/routes/(user)/workflows/[workflowId]/+page.svelte @@ -7,7 +7,6 @@ import { getWorkflowQuery, updateWorkflowMutation } from '#lib/queries/workflow.query.ts'; import { Route } from '#lib/route.ts'; import { getWorkflowActions } from '#lib/services/workflow.service.ts'; - import { generateId } from '#lib/utils/generate-id.ts'; import { getTriggerDescription, getTriggerName } from '#lib/utils/workflow.ts'; import type { WorkflowUpdateDto } from '@immich/sdk'; import { @@ -63,6 +62,9 @@ const query = createPreloadedQuery(() => getWorkflowQuery(params.workflowId)); const workflow = $derived(query.data); + let stepCounter = 0; + const generateId = () => `step-${stepCounter++}`; + let { id, enabled, name, description, trigger } = $state(query.data); let steps = $state(query.data.steps.map((step) => ({ ...step, id: generateId() }))); const savedWorkflow = $derived(cloneDeep(workflow));