import { notFound } from "next/navigation";
import { cookies } from "next/headers";
import { getMe, lookupRemoteActor, getRemoteActorPosts, Me } from "@/lib/api";
import { RemoteUserProfile } from "@/components/remote-user-profile";

interface RemoteActorPageProps {
  searchParams: Promise<{ handle?: string }>;
}

export default async function RemoteActorPage({
  searchParams,
}: RemoteActorPageProps) {
  const { handle } = await searchParams;
  if (!handle) notFound();

  const token = (await cookies()).get("auth_token")?.value ?? null;

  const [actorResult, postsResult, meResult] = await Promise.allSettled([
    lookupRemoteActor(handle, token),
    getRemoteActorPosts(handle, 1, token),
    token ? getMe(token) : Promise.resolve(null),
  ]);

  if (actorResult.status === "rejected") {
    notFound();
  }

  const actor = actorResult.value;
  const posts =
    postsResult.status === "fulfilled" ? postsResult.value.items : [];
  const me =
    meResult.status === "fulfilled" ? (meResult.value as Me | null) : null;

  return <RemoteUserProfile actor={actor} initialPosts={posts} me={me} />;
}
