diff --git a/web/src/lib/managers/event-manager.svelte.ts b/web/src/lib/managers/event-manager.svelte.ts index d612d4fe8c..f6ef83386f 100644 --- a/web/src/lib/managers/event-manager.svelte.ts +++ b/web/src/lib/managers/event-manager.svelte.ts @@ -65,6 +65,8 @@ export type Events = { // confirmed permanently deleted from server UserAdminDeleted: [{ id: string }]; + SessionLocked: []; + SystemConfigUpdate: [SystemConfigDto]; LibraryCreate: [LibraryResponseDto]; diff --git a/web/src/lib/services/user.service.ts b/web/src/lib/services/user.service.ts index fbb562b2c0..a1fead693f 100644 --- a/web/src/lib/services/user.service.ts +++ b/web/src/lib/services/user.service.ts @@ -1,8 +1,38 @@ import { eventManager } from '$lib/managers/event-manager.svelte'; import { handleError } from '$lib/utils/handle-error'; import { getFormatter } from '$lib/utils/i18n'; -import { changePassword, resetPinCode, type ChangePasswordDto, type PinCodeResetDto } from '@immich/sdk'; -import { toastManager } from '@immich/ui'; +import { + changePassword, + lockAuthSession, + resetPinCode, + type ChangePasswordDto, + type PinCodeResetDto, +} from '@immich/sdk'; +import { toastManager, type ActionItem } from '@immich/ui'; +import { mdiLockOutline } from '@mdi/js'; +import type { MessageFormatter } from 'svelte-i18n'; + +export const getUserActions = ($t: MessageFormatter) => { + const LockSession: ActionItem = { + title: $t('lock'), + color: 'primary', + icon: mdiLockOutline, + onAction: () => handleLockSession(), + }; + + return { LockSession }; +}; + +const handleLockSession = async () => { + const $t = await getFormatter(); + + try { + await lockAuthSession(); + eventManager.emit('SessionLocked'); + } catch (error) { + handleError(error, $t('errors.something_went_wrong')); + } +}; export const handleResetPinCode = async (dto: PinCodeResetDto) => { const $t = await getFormatter(); diff --git a/web/src/routes/(user)/locked/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/locked/[[photos=photos]]/[[assetId=id]]/+page.svelte index 43d05f6265..931c19341b 100644 --- a/web/src/routes/(user)/locked/[[photos=photos]]/[[assetId=id]]/+page.svelte +++ b/web/src/routes/(user)/locked/[[photos=photos]]/[[assetId=id]]/+page.svelte @@ -1,6 +1,7 @@ - - {#snippet buttons()} - - {/snippet} + +