diff --git a/web/src/lib/modals/AlbumAddUsersModal.svelte b/web/src/lib/modals/AlbumAddUsersModal.svelte index 724317ac47..ede6a66b74 100644 --- a/web/src/lib/modals/AlbumAddUsersModal.svelte +++ b/web/src/lib/modals/AlbumAddUsersModal.svelte @@ -2,7 +2,7 @@ import UserAvatar from '$lib/components/shared-components/user-avatar.svelte'; import { handleAddUsersToAlbum } from '$lib/services/album.service'; import { searchUsers, type AlbumResponseDto, type UserResponseDto } from '@immich/sdk'; - import { FormModal, ListButton, Stack, Text } from '@immich/ui'; + import { FormModal, ListButton, LoadingSpinner, Stack, Text } from '@immich/ui'; import { onMount } from 'svelte'; import { t } from 'svelte-i18n'; import { SvelteMap } from 'svelte/reactivity'; @@ -18,6 +18,7 @@ const excludedUserIds = $derived([album.ownerId, ...album.albumUsers.map(({ user: { id } }) => id)]); const filteredUsers = $derived(users.filter(({ id }) => !excludedUserIds.includes(id))); const selectedUsers = new SvelteMap(); + let loading = $state(true); const handleToggle = (user: UserResponseDto) => { if (selectedUsers.has(user.id)) { @@ -36,6 +37,7 @@ onMount(async () => { users = await searchUsers(); + loading = false; }); @@ -47,17 +49,23 @@ disabled={selectedUsers.size === 0} {onClose} > - - {#each filteredUsers as user (user.id)} - handleToggle(user)}> - -
- {user.name} - {user.email} -
-
- {:else} - {$t('album_share_no_users')} - {/each} -
+ {#if loading} +
+ +
+ {:else} + + {#each filteredUsers as user (user.id)} + handleToggle(user)}> + +
+ {user.name} + {user.email} +
+
+ {:else} + {$t('album_share_no_users')} + {/each} +
+ {/if} diff --git a/web/src/lib/modals/PartnerSelectionModal.svelte b/web/src/lib/modals/PartnerSelectionModal.svelte index 65e263918f..443b2f34d3 100644 --- a/web/src/lib/modals/PartnerSelectionModal.svelte +++ b/web/src/lib/modals/PartnerSelectionModal.svelte @@ -1,8 +1,7 @@