import { DashboardPageClient } from "@/components/dashboard/dashboard-page-client";
import { getViewerContext } from "@/lib/auth";
import { getDashboardFilterParams, resolveDashboardScope } from "@/lib/dashboard-request";
import { fetchDashboardData } from "@/lib/queries/dashboard";

export default async function DashboardPage({
  searchParams,
}: {
  searchParams: Promise<Record<string, string | string[] | undefined>>;
}) {
  const viewer = await getViewerContext();
  const params = await searchParams;
  const query = new URLSearchParams();

  for (const [key, rawValue] of Object.entries(params)) {
    const value = Array.isArray(rawValue) ? rawValue[0] : rawValue;
    if (typeof value === "string" && value) {
      query.set(key, value);
    }
  }

  const { activeScope, scopeCountries, adminCountryOptions } = resolveDashboardScope(
    viewer,
    query.get("scope") ?? "",
  );
  const data = await fetchDashboardData(
    viewer,
    getDashboardFilterParams(query),
    scopeCountries,
    adminCountryOptions,
  );

  return <DashboardPageClient initialQuery={query.toString()} initialPayload={{ activeScope, data }} />;
}
