fix: don't redirect to /u/{handle}/ on private (multi-user) instances
This commit is contained in:
@@ -22,6 +22,17 @@ export interface ShardHandle {
|
|||||||
url: string;
|
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[] {
|
export function readShardHandles(): ShardHandle[] {
|
||||||
try {
|
try {
|
||||||
const dataDir = findDataDir();
|
const dataDir = findDataDir();
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
import Base from '../layouts/Base.astro';
|
import Base from '../layouts/Base.astro';
|
||||||
import ActivityFeed from '../components/ActivityFeed.svelte';
|
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 base = import.meta.env.BASE_URL;
|
||||||
const shards = readShardHandles();
|
const shards = readShardHandles();
|
||||||
const isSingleUser = shards.length === 1;
|
const isSingleUser = shards.length === 1 && !isInstancePrivate();
|
||||||
const singleHandle = isSingleUser ? shards[0].handle : null;
|
const singleHandle = isSingleUser ? shards[0].handle : null;
|
||||||
---
|
---
|
||||||
{isSingleUser ? (
|
{isSingleUser ? (
|
||||||
|
|||||||
Reference in New Issue
Block a user