diff --git a/site/src/components/ActivityFeed.svelte b/site/src/components/ActivityFeed.svelte index ff6af52..77f4e56 100644 --- a/site/src/components/ActivityFeed.svelte +++ b/site/src/components/ActivityFeed.svelte @@ -48,6 +48,8 @@ /** Remaining combined-feed pages (multi-user global feed). */ let feedNextPage = 0; let feedTotalPages = 0; + /** Grand total from feed.json — shows instance-wide count even before all pages are loaded. */ + let totalActivities = 0; /** Logged-in handle — resolved async via bincio:me event. */ let me: string = ''; @@ -123,6 +125,7 @@ const combined = await loadCombinedFeed(base); if (combined) { all = combined.activities; + totalActivities = combined.totalActivities; feedTotalPages = combined.remainingPages + 1; feedNextPage = combined.remainingPages > 0 ? 2 : 0; loading = false; @@ -175,7 +178,11 @@ {/each} {#if all.length > 0} - {filtered.length} {filtered.length === 1 ? 'activity' : 'activities'} + {#if totalActivities > filtered.length} + {filtered.length} of {totalActivities} activities + {:else} + {filtered.length} {filtered.length === 1 ? 'activity' : 'activities'} + {/if} {/if} diff --git a/site/src/lib/dataloader.ts b/site/src/lib/dataloader.ts index e2d7bdd..c1da75e 100644 --- a/site/src/lib/dataloader.ts +++ b/site/src/lib/dataloader.ts @@ -269,12 +269,13 @@ interface FeedPage { */ export async function loadCombinedFeed( baseUrl: string, -): Promise<{ activities: ActivitySummary[]; remainingPages: number } | null> { +): Promise<{ activities: ActivitySummary[]; remainingPages: number; totalActivities: number } | null> { try { const feed = await fetchJSON(`${baseUrl}data/feed.json`); return { activities: feed.activities ?? [], remainingPages: (feed.total_pages ?? 1) - 1, + totalActivities: feed.total_activities ?? 0, }; } catch { return null;