import type { Metadata } from "next";
import { notFound } from "next/navigation";
import ClientPortalResetPasswordCard from "@/components/ClientPortalResetPasswordCard";
import { getSupabaseClient } from "@/lib/supabase";

export const revalidate = 0;
export const dynamic = "force-dynamic";

export async function generateMetadata(props: { params: Promise<{ slug: string }> }): Promise<Metadata> {
  const params = await props.params;
  const supabase = getSupabaseClient();
  const { data: profile } = await supabase
    .from("profiles")
    .select("catalog_name,store_name")
    .eq("slug", params.slug)
    .maybeSingle();

  const storeName =
    (profile as { catalog_name?: string | null; store_name?: string | null } | null)?.catalog_name ||
    (profile as { catalog_name?: string | null; store_name?: string | null } | null)?.store_name ||
    "Loja";

  return {
    title: `Redefinir senha | ${storeName}`,
    description: `Redefina a senha do portal do cliente da loja ${storeName}.`,
  };
}

export default async function ClientPortalResetPasswordPage(props: {
  params: Promise<{ slug: string }>;
  searchParams: Promise<{ email?: string; portal_token?: string }>;
}) {
  const params = await props.params;
  const searchParams = await props.searchParams;
  const slug = params.slug;
  const supabase = getSupabaseClient();

  const { data: profile } = await supabase
    .from("profiles")
    .select("slug,catalog_name,store_name,catalog_logo_url,logo_url,primary_color")
    .eq("slug", slug)
    .maybeSingle();

  if (!profile) return notFound();

  const typedProfile = profile as {
    slug: string;
    catalog_name?: string | null;
    store_name?: string | null;
    catalog_logo_url?: string | null;
    logo_url?: string | null;
    primary_color?: string | null;
  };

  const storeName = typedProfile.catalog_name || typedProfile.store_name || "Loja";
  const logoUrl = typedProfile.catalog_logo_url || typedProfile.logo_url || "";
  const primaryColor = typedProfile.primary_color || "#4425A7";
  const defaultEmail = String(searchParams?.email || "").trim();
  const defaultPortalToken = String(searchParams?.portal_token || "").trim();

  return (
    <ClientPortalResetPasswordCard
      slug={typedProfile.slug}
      storeName={storeName}
      logoUrl={logoUrl}
      primaryColor={primaryColor}
      defaultEmail={defaultEmail}
      defaultPortalToken={defaultPortalToken}
    />
  );
}
