diff --git a/site/src/lib/manifest.ts b/site/src/lib/manifest.ts index 3071bc3..2dc52f2 100644 --- a/site/src/lib/manifest.ts +++ b/site/src/lib/manifest.ts @@ -22,6 +22,17 @@ export interface ShardHandle { url: string; } +export function isInstancePrivate(): boolean { + try { + const dataDir = findDataDir(); + if (!dataDir) return false; + const root = JSON.parse(readFileSync(join(dataDir, 'index.json'), 'utf-8')); + return root?.instance?.private === true; + } catch { + return false; + } +} + export function readShardHandles(): ShardHandle[] { try { const dataDir = findDataDir(); diff --git a/site/src/pages/index.astro b/site/src/pages/index.astro index eac5563..2adc560 100644 --- a/site/src/pages/index.astro +++ b/site/src/pages/index.astro @@ -1,11 +1,11 @@ --- import Base from '../layouts/Base.astro'; import ActivityFeed from '../components/ActivityFeed.svelte'; -import { readShardHandles } from '../lib/manifest'; +import { readShardHandles, isInstancePrivate } from '../lib/manifest'; const base = import.meta.env.BASE_URL; const shards = readShardHandles(); -const isSingleUser = shards.length === 1; +const isSingleUser = shards.length === 1 && !isInstancePrivate(); const singleHandle = isSingleUser ? shards[0].handle : null; --- {isSingleUser ? (