diff --git a/frontend/src/lib/components/ResourceList.svelte b/frontend/src/lib/components/ResourceList.svelte index d2288b6f..f7b88bf8 100644 --- a/frontend/src/lib/components/ResourceList.svelte +++ b/frontend/src/lib/components/ResourceList.svelte @@ -54,6 +54,7 @@ import EmptyState from '$lib/components/EmptyState.svelte'; import SkeletonList from '$lib/components/SkeletonList.svelte'; import ListToolbar from '$lib/components/ListToolbar.svelte'; + import UserVignette from '$lib/components/UserVignette.svelte'; import VirtualList from '$lib/components/VirtualList.svelte'; import { t } from '$lib/i18n/index.svelte'; import { files as filesStore } from '$lib/stores/files.svelte'; @@ -329,12 +330,14 @@ {#if showOwner}
- - - {entry.ownerName ?? entry.ownerId ?? ''} - + {#if entry.ownerId} + + {:else} + {entry.ownerName ?? '—'} + {/if}
{/if} {#if showPath}
{entry.path ?? ''}
{/if} @@ -570,28 +573,7 @@ min-width: 0; } - .rl-vignette { - display: inline-flex; - align-items: center; - gap: var(--space-2); - min-width: 0; - } - - .rl-vignette__avatar { - display: inline-flex; - align-items: center; - justify-content: center; - width: 24px; - height: 24px; - border-radius: 50%; - background: var(--color-accent-bg-sm); - color: var(--color-accent-text); - font-size: var(--text-xs); - font-weight: var(--weight-semibold); - flex: none; - } - - .rl-vignette__name { + .owner-cell__placeholder { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; diff --git a/frontend/src/routes/shared-with-me/+page.svelte b/frontend/src/routes/shared-with-me/+page.svelte index 2a49b1dd..0ac91ecb 100644 --- a/frontend/src/routes/shared-with-me/+page.svelte +++ b/frontend/src/routes/shared-with-me/+page.svelte @@ -22,9 +22,13 @@ name: it.resource.name, kind: it.resource_type, iconClass: it.resource.icon_class, - path: it.granted_by - ? t('shared_with_me.from', { who: it.granted_by }, 'Shared by {{who}}') - : it.resource.path, + // The sharer becomes the "owner" surface — ResourceList renders + // `` (avatar / name / external badge), + // resolved lazily via `/api/users/{id}`. `path` keeps the + // resource's real location so the row still shows where it + // lives, not a translated string. + ownerId: it.granted_by ?? null, + path: it.resource.path, size: it.resource_type === 'file' ? (it.resource as FileItem).size : null, date: it.granted_at }) @@ -79,6 +83,7 @@ {error} emptyText={t('shared_with_me.empty', 'Nothing has been shared with you yet.')} hasMore={!!cursor} + showOwner={true} onloadmore={() => load(false)} onopen={open} /> diff --git a/frontend/src/routes/shared/+page.svelte b/frontend/src/routes/shared/+page.svelte index d333ecb7..9f72129a 100644 --- a/frontend/src/routes/shared/+page.svelte +++ b/frontend/src/routes/shared/+page.svelte @@ -22,6 +22,7 @@ import Icon from '$lib/icons/Icon.svelte'; import ListToolbar from '$lib/components/ListToolbar.svelte'; import ShareDialog from '$lib/components/ShareDialog.svelte'; + import UserVignette from '$lib/components/UserVignette.svelte'; import { t } from '$lib/i18n/index.svelte'; import { ui } from '$lib/stores/ui.svelte'; import { iconNameFromClass } from '$lib/utils/display'; @@ -388,16 +389,21 @@ {t('myshares.editSharing', 'Edit sharing')} + {:else if lane.header.kind === 'user'} + + + {:else} {laneTitle(lane.header)} @@ -416,8 +422,10 @@ {item.resource.name} {:else if grant.subject_type === 'user'} - - {resolveLabel('user', grant.subject_id)} + {:else if grant.subject_type === 'group'} {resolveLabel('group', grant.subject_id)}