diff --git a/src/app/api/swarm/users/[handle]/route.ts b/src/app/api/swarm/users/[handle]/route.ts index 157df7a..0732486 100644 --- a/src/app/api/swarm/users/[handle]/route.ts +++ b/src/app/api/swarm/users/[handle]/route.ts @@ -20,6 +20,7 @@ export interface SwarmUserProfile { postsCount: number; createdAt: string; isBot?: boolean; + botOwnerHandle?: string; // Handle of the bot's owner (e.g., "user" or "user@domain") nodeDomain: string; } @@ -62,6 +63,9 @@ export async function GET(request: NextRequest, context: RouteContext) { // Find the user const user = await db.query.users.findFirst({ where: eq(users.handle, cleanHandle), + with: { + botOwner: true, // Include bot owner if this is a bot + }, }); if (!user) { @@ -85,6 +89,7 @@ export async function GET(request: NextRequest, context: RouteContext) { postsCount: user.postsCount, createdAt: user.createdAt.toISOString(), isBot: user.isBot || undefined, + botOwnerHandle: user.isBot && user.botOwner ? user.botOwner.handle : undefined, nodeDomain, }; diff --git a/src/app/api/users/[handle]/route.ts b/src/app/api/users/[handle]/route.ts index 355f232..a9dd311 100644 --- a/src/app/api/users/[handle]/route.ts +++ b/src/app/api/users/[handle]/route.ts @@ -94,6 +94,16 @@ export async function GET(request: Request, context: RouteContext) { const swarmData = await fetchSwarmProfile(remoteHandle, remoteDomain); if (swarmData?.profile) { const profile = swarmData.profile; + + // Build botOwner object if this is a bot with an owner + let botOwner = undefined; + if (profile.isBot && profile.botOwnerHandle) { + botOwner = { + id: `swarm:${remoteDomain}:${profile.botOwnerHandle}`, + handle: `${profile.botOwnerHandle}@${remoteDomain}`, + }; + } + return NextResponse.json({ user: { id: `swarm:${remoteDomain}:${profile.handle}`, @@ -111,6 +121,7 @@ export async function GET(request: Request, context: RouteContext) { isSwarm: true, nodeDomain: remoteDomain, isBot: profile.isBot || false, + botOwner, } }); }