feat: Implement dynamic node title metadata and enhance swarm user and post hydration.
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import { db, follows, users, remoteFollowers } from '@/db';
|
||||
import { eq } from 'drizzle-orm';
|
||||
import { hydrateSwarmUsers } from '@/lib/swarm/user-hydration';
|
||||
|
||||
export interface SwarmFollowerUser {
|
||||
handle: string;
|
||||
@@ -88,8 +89,33 @@ export async function GET(request: NextRequest, context: RouteContext) {
|
||||
// Merge all followers
|
||||
const allFollowers = [...localFollowers, ...remoteFollowersList].slice(0, limit);
|
||||
|
||||
// Hydrate remote users (from 3rd party nodes)
|
||||
// We need to map to the HydratedUser interface temporarily for the helper
|
||||
const toHydrate = allFollowers.map(f => ({
|
||||
id: f.handle,
|
||||
handle: f.handle,
|
||||
displayName: f.displayName,
|
||||
avatarUrl: f.avatarUrl,
|
||||
bio: f.bio,
|
||||
isRemote: f.isRemote || false,
|
||||
isBot: f.isBot,
|
||||
nodeDomain: undefined,
|
||||
}));
|
||||
|
||||
const hydrated = await hydrateSwarmUsers(toHydrate);
|
||||
|
||||
// Map back to SwarmFollowerUser
|
||||
const finalFollowers: SwarmFollowerUser[] = hydrated.map(u => ({
|
||||
handle: u.handle,
|
||||
displayName: u.displayName || u.handle.split('@')[0], // Ensure non-null
|
||||
avatarUrl: u.avatarUrl || undefined, // Map null to undefined
|
||||
bio: u.bio || undefined,
|
||||
isBot: u.isBot,
|
||||
isRemote: u.isRemote,
|
||||
}));
|
||||
|
||||
return NextResponse.json({
|
||||
followers: allFollowers,
|
||||
followers: finalFollowers,
|
||||
nodeDomain,
|
||||
timestamp: new Date().toISOString(),
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user