From 03a63d016101ba05fd86364c85aa56d553c99367 Mon Sep 17 00:00:00 2001 From: Edouard Vanbelle Date: Sun, 19 Jul 2026 15:26:26 +0200 Subject: [PATCH] feat(drive): use GroupVignette for group as member --- .../src/lib/components/GroupVignette.svelte | 151 ++++++++++++++++++ .../routes/config/drive/[uuid]/+page.svelte | 11 +- 2 files changed, 158 insertions(+), 4 deletions(-) create mode 100644 frontend/src/lib/components/GroupVignette.svelte diff --git a/frontend/src/lib/components/GroupVignette.svelte b/frontend/src/lib/components/GroupVignette.svelte new file mode 100644 index 00000000..7aa5bf37 --- /dev/null +++ b/frontend/src/lib/components/GroupVignette.svelte @@ -0,0 +1,151 @@ + + + + + + {label} + {#if sublabel}{sublabel}{/if} + + + + diff --git a/frontend/src/routes/config/drive/[uuid]/+page.svelte b/frontend/src/routes/config/drive/[uuid]/+page.svelte index ffc1a8b7..b72e8623 100644 --- a/frontend/src/routes/config/drive/[uuid]/+page.svelte +++ b/frontend/src/routes/config/drive/[uuid]/+page.svelte @@ -14,6 +14,8 @@ import ReadOnlyBanner from '$lib/components/ReadOnlyBanner.svelte'; import ShareDialog from '$lib/components/ShareDialog.svelte'; import UserVignette from '$lib/components/UserVignette.svelte'; + import GroupVignette from '$lib/components/GroupVignette.svelte'; + import { ensureResolvers } from '$lib/api/endpoints/recipients'; import Icon from '$lib/icons/Icon.svelte'; import { t } from '$lib/i18n/index.svelte'; import { drives as drivesStore, driveIcon } from '$lib/stores/drives.svelte'; @@ -192,6 +194,10 @@ onMount(() => { void drivesStore.load(); + // Preload the recipient caches (users + groups) so the members + // list can render group names + user labels synchronously. Both + // caches are module-level and shared across surfaces. + void ensureResolvers(); }); // SvelteKit reuses this component when navigating between @@ -368,10 +374,7 @@ {#if m.subject.type === 'user'} {:else if m.subject.type === 'group'} - - - {m.subject.id} - + {:else}