1
0
mirror of https://github.com/immich-app/immich.git synced 2024-11-28 09:33:27 +02:00

chore(web): simpler unique ID generation (#9945)

This commit is contained in:
Ben 2024-06-02 16:41:44 +00:00 committed by GitHub
parent d1135db8cf
commit 1323c7ee88
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 8 additions and 36 deletions

View File

@ -18,8 +18,8 @@
import { shortcuts } from '$lib/actions/shortcut';
import { clickOutside } from '$lib/actions/click-outside';
import { focusOutside } from '$lib/actions/focus-outside';
import { generateId } from '$lib/utils/generate-id';
import CircleIconButton from '$lib/components/elements/buttons/circle-icon-button.svelte';
import { uniqueIdStore } from '$lib/stores/unique-id.store';
export let label: string;
export let hideLabel = false;
@ -30,7 +30,7 @@
/**
* Unique identifier for the combobox.
*/
let id: string = uniqueIdStore.generateId();
let id: string = generateId();
/**
* Indicates whether or not the dropdown autocomplete list should be visible.
*/

View File

@ -3,7 +3,7 @@
import { fade } from 'svelte/transition';
import FocusTrap from '$lib/components/shared-components/focus-trap.svelte';
import ModalHeader from '$lib/components/shared-components/modal-header.svelte';
import { uniqueIdStore } from '$lib/stores/unique-id.store';
import { generateId } from '$lib/utils/generate-id';
export let onClose: () => void;
export let title: string;
@ -27,7 +27,7 @@
/**
* Unique identifier for the modal.
*/
let id: string = uniqueIdStore.generateId();
let id: string = generateId();
$: titleId = `${id}-title`;
$: isStickyBottom = !!$$slots['sticky-bottom'];

View File

@ -3,7 +3,7 @@
import { fly } from 'svelte/transition';
import { createEventDispatcher } from 'svelte';
import Slider from '$lib/components/elements/slider.svelte';
import { uniqueIdStore } from '$lib/stores/unique-id.store';
import { generateId } from '$lib/utils/generate-id';
export let title: string;
export let subtitle = '';
@ -11,7 +11,7 @@
export let disabled = false;
export let isEdited = false;
let id: string = uniqueIdStore.generateId();
let id: string = generateId();
$: sliderId = `${id}-slider`;
$: subtitleId = subtitle ? `${id}-subtitle` : undefined;

View File

@ -1,14 +0,0 @@
import { uniqueIdStore } from '$lib/stores/unique-id.store';
describe('uniqueIdStore', () => {
afterEach(() => {
uniqueIdStore.update(() => -1);
});
it('should generate unique ids', () => {
const { generateId } = uniqueIdStore;
const ids = [generateId(), generateId(), generateId()];
expect(ids).toEqual(['id-0', 'id-1', 'id-2']);
});
});

View File

@ -1,16 +0,0 @@
import { get, writable } from 'svelte/store';
function createIdStore() {
const { subscribe, update } = writable(-1);
return {
subscribe,
update,
generateId: () => {
update((value) => value + 1);
return `id-${get(uniqueIdStore)}`;
},
};
}
export const uniqueIdStore = createIdStore();

View File

@ -0,0 +1,2 @@
let _count = 0;
export const generateId = (): string => `id-${_count++}`;