import type { Metadata } from "next";
import { redirect } from "next/navigation";
import { Suspense } from "react";
import { AuthCard } from "@/features/auth/auth-shell";
import { SessionRecovery } from "@/features/auth/session-lifecycle";
import { SignInForm } from "@/features/auth/signin-form";
import { authDestination } from "@/features/auth/auth-client";
import {
  canRestoreExpiredSession,
  getServerSession,
} from "@/lib/auth/server-session";
import { isMonetizationApiConfigured } from "@/lib/auth/server-config";

export const metadata: Metadata = { title: "Sign In" };
export const dynamic = "force-dynamic";

export default async function Page() {
  const apiEnabled = isMonetizationApiConfigured();
  let sessionCheckFailed = false;
  let restoreSession = false;
  let session = null as Awaited<ReturnType<typeof getServerSession>>;
  if (apiEnabled) {
    try {
      session = await getServerSession();
    } catch {
      sessionCheckFailed = true;
    }
    restoreSession = await canRestoreExpiredSession();
  }
  if (session) redirect(authDestination(session));

  return (
    <AuthCard
      title="Sign In"
      description="Access your EV charging monetization workspace."
    >
      <Suspense>
        <SessionRecovery enabled={restoreSession}>
          <SignInForm
            apiEnabled={apiEnabled}
            sessionCheckFailed={sessionCheckFailed}
          />
        </SessionRecovery>
      </Suspense>
    </AuthCard>
  );
}
