From e2ec79dbf09193a90c8b000a6089154abdf200a9 Mon Sep 17 00:00:00 2001 From: Alex Tran Date: Sun, 14 Dec 2025 01:02:31 +0000 Subject: [PATCH] fix: shared link expiration and small styling --- ...link-card.svelte => SharedLinkCard.svelte} | 81 ++++++++++--------- web/src/lib/services/shared-link.service.ts | 4 +- .../shared-links/[[id=id]]/+page.svelte | 2 +- 3 files changed, 45 insertions(+), 42 deletions(-) rename web/src/lib/components/sharedlinks-page/{shared-link-card.svelte => SharedLinkCard.svelte} (67%) diff --git a/web/src/lib/components/sharedlinks-page/shared-link-card.svelte b/web/src/lib/components/sharedlinks-page/SharedLinkCard.svelte similarity index 67% rename from web/src/lib/components/sharedlinks-page/shared-link-card.svelte rename to web/src/lib/components/sharedlinks-page/SharedLinkCard.svelte index 7187dc22ad..30215ab1a2 100644 --- a/web/src/lib/components/sharedlinks-page/shared-link-card.svelte +++ b/web/src/lib/components/sharedlinks-page/SharedLinkCard.svelte @@ -5,7 +5,8 @@ import { getSharedLinkActions } from '$lib/services/shared-link.service'; import { locale } from '$lib/stores/preferences.store'; import { SharedLinkType, type SharedLinkResponseDto } from '@immich/sdk'; - import { Badge, ContextMenuButton, MenuItemType, Text } from '@immich/ui'; + import { ContextMenuButton, Icon, MenuItemType, Text } from '@immich/ui'; + import { mdiDownload, mdiInformationOutline, mdiLink, mdiLock, mdiUpload } from '@mdi/js'; import { DateTime, type ToRelativeUnit } from 'luxon'; import { t } from 'svelte-i18n'; @@ -44,50 +45,52 @@ > -
- - {#if sharedLink.type === SharedLinkType.Album} - {sharedLink.album?.albumName} - {:else if sharedLink.type === SharedLinkType.Individual} - {$t('individual_share')} - {/if} - - -
- {#if isExpired} - {$t('expired')} - {:else if expiresAt} - +
+
+ + {#if isExpired} + {$t('expired')} + {:else if expiresAt} {$t('expires_date', { values: { date: getCountDownExpirationDate(expiresAt, now) } })} - - {:else} - {$t('expires_date', { values: { date: '∞' } })} - {/if} + {:else} + {$t('expires_date', { values: { date: '∞' } })} + {/if} + - {#if sharedLink.slug} - {$t('custom_url')} - {/if} + + {#if sharedLink.type === SharedLinkType.Album} + {sharedLink.album?.albumName} + {:else if sharedLink.type === SharedLinkType.Individual} + {$t('individual_share')} + {/if} + - {#if sharedLink.allowUpload} - {$t('upload')} - {/if} - - {#if sharedLink.showMetadata && sharedLink.allowDownload} - {$t('download')} - {/if} - - {#if sharedLink.showMetadata} - {$t('exif')} - {/if} - - {#if sharedLink.password} - {$t('password')} + {#if sharedLink.description} + {sharedLink.description} {/if}
- {#if sharedLink.description} - {sharedLink.description} - {/if} +
+ {#if sharedLink.slug} + + {/if} + + {#if sharedLink.allowUpload} + + {/if} + + {#if sharedLink.showMetadata && sharedLink.allowDownload} + + {/if} + + {#if sharedLink.showMetadata} + + {/if} + + {#if sharedLink.password} + + {/if} +
diff --git a/web/src/lib/services/shared-link.service.ts b/web/src/lib/services/shared-link.service.ts index cbea6ddd9d..82519ad35b 100644 --- a/web/src/lib/services/shared-link.service.ts +++ b/web/src/lib/services/shared-link.service.ts @@ -17,7 +17,7 @@ import { type SharedLinkResponseDto, } from '@immich/sdk'; import { modalManager, toastManager, type ActionItem } from '@immich/ui'; -import { mdiContentCopy, mdiPencilOutline, mdiQrcode, mdiTrashCanOutline } from '@mdi/js'; +import { mdiContentCopy, mdiDeleteOutline, mdiPencilOutline, mdiQrcode } from '@mdi/js'; import type { MessageFormatter } from 'svelte-i18n'; export const getSharedLinkActions = ($t: MessageFormatter, sharedLink: SharedLinkResponseDto) => { @@ -29,7 +29,7 @@ export const getSharedLinkActions = ($t: MessageFormatter, sharedLink: SharedLin const Delete: ActionItem = { title: $t('delete_link'), - icon: mdiTrashCanOutline, + icon: mdiDeleteOutline, color: 'danger', onAction: () => handleDeleteSharedLink(sharedLink), }; diff --git a/web/src/routes/(user)/shared-links/[[id=id]]/+page.svelte b/web/src/routes/(user)/shared-links/[[id=id]]/+page.svelte index d8b35204dc..cc9afd4f64 100644 --- a/web/src/routes/(user)/shared-links/[[id=id]]/+page.svelte +++ b/web/src/routes/(user)/shared-links/[[id=id]]/+page.svelte @@ -3,7 +3,7 @@ import { page } from '$app/state'; import UserPageLayout from '$lib/components/layouts/user-page-layout.svelte'; import OnEvents from '$lib/components/OnEvents.svelte'; - import SharedLinkCard from '$lib/components/sharedlinks-page/shared-link-card.svelte'; + import SharedLinkCard from '$lib/components/sharedlinks-page/SharedLinkCard.svelte'; import { AppRoute } from '$lib/constants'; import GroupTab from '$lib/elements/GroupTab.svelte'; import SharedLinkUpdateModal from '$lib/modals/SharedLinkUpdateModal.svelte';