From 7042c63ed18c510b72f5735d3ac76d2746c843eb Mon Sep 17 00:00:00 2001 From: Jason Rasmussen Date: Thu, 13 Aug 2026 12:46:13 -0400 Subject: [PATCH] fix(web): accept invitation --- i18n/en.json | 1 - .../lib/modals/ClusterGroupUsersModal.svelte | 7 +++-- .../user-settings/SharingSettings.svelte | 27 ++++++++++++------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/i18n/en.json b/i18n/en.json index 55268d4cab..4b9e25c077 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -1035,7 +1035,6 @@ "unable_to_delete_album": "Unable to delete album", "unable_to_delete_asset": "Unable to delete asset", "unable_to_delete_assets": "Error deleting assets", - "unable_to_delete_cluster_group_request": "Unable to delete request", "unable_to_delete_exclusion_pattern": "Unable to delete exclusion pattern", "unable_to_delete_shared_link": "Unable to delete shared link", "unable_to_delete_user": "Unable to delete user", diff --git a/web/src/lib/modals/ClusterGroupUsersModal.svelte b/web/src/lib/modals/ClusterGroupUsersModal.svelte index d461e64658..2bfb61257c 100644 --- a/web/src/lib/modals/ClusterGroupUsersModal.svelte +++ b/web/src/lib/modals/ClusterGroupUsersModal.svelte @@ -4,10 +4,10 @@ import { Button, HStack, LoadingSpinner, Modal, ModalBody, ModalFooter, Text } from '@immich/ui'; import { t } from 'svelte-i18n'; - interface Props { + type Props = { clusterGroupId: string; onClose: (result?: 'accept' | 'decline') => void; - } + }; let { clusterGroupId, onClose }: Props = $props(); @@ -18,8 +18,7 @@ }; - - onClose()} size="small"> + {#await loadUsers()}
diff --git a/web/src/routes/(user)/user-settings/SharingSettings.svelte b/web/src/routes/(user)/user-settings/SharingSettings.svelte index a2d32ac33e..349b910abd 100644 --- a/web/src/routes/(user)/user-settings/SharingSettings.svelte +++ b/web/src/routes/(user)/user-settings/SharingSettings.svelte @@ -7,6 +7,7 @@ import { authManager } from '$lib/managers/auth-manager.svelte'; import { handleError } from '$lib/utils/handle-error'; import { + acceptClusterGroupRequest, createClusterGroupRequest, createPartner, deleteClusterGroupRequest, @@ -82,10 +83,7 @@ try { for (const user of selected) { - await createClusterGroupRequest({ - id: clusterGroupId, - clusterGroupRequestCreateDto: { userId: user.id }, - }); + await createClusterGroupRequest({ id: clusterGroupId, clusterGroupRequestCreateDto: { userId: user.id } }); } await refresh(); @@ -95,7 +93,21 @@ }; const handleViewGroup = async (request: ClusterGroupRequestResponseDto) => { - await modalManager.show(ClusterGroupUsersModal, { clusterGroupId: request.clusterGroupId }); + const result = await modalManager.show(ClusterGroupUsersModal, { clusterGroupId: request.clusterGroupId }); + if (result === 'accept') { + await handleAcceptRequest(request); + } else if (result === 'decline') { + handleDeleteRequest(request); + } + }; + + const handleAcceptRequest = async (request: ClusterGroupRequestResponseDto) => { + try { + await acceptClusterGroupRequest({ id: request.id }); + await refresh(); + } catch (error) { + handleError(error, $t('errors.something_went_wrong')); + } }; const handleDeleteRequest = async (request: ClusterGroupRequestResponseDto) => { @@ -103,7 +115,7 @@ await deleteClusterGroupRequest({ id: request.id }); await refresh(); } catch (error) { - handleError(error, $t('errors.unable_to_delete_cluster_group_request')); + handleError(error, $t('errors.something_went_wrong')); } }; @@ -257,9 +269,6 @@ -
{/each}