export const runtime = "nodejs";
import type { GetServerSidePropsContext } from "next";
import { getServerSession } from "next-auth";
import type { Session } from "next-auth";
import { useSession } from "next-auth/react";
import { authOptions } from "@/lib/auth";
import Webpage from "@/components/Webpage";
import Headline, { PageState } from "@/components/Headline";
import Profil from "@/components/Profil/Profil";

type ProfilPageProps = {
  session?: Session | null;
};

export async function getServerSideProps(context: GetServerSidePropsContext) {
  const session = await getServerSession(context.req, context.res, authOptions);

  if (!session?.user) {
    return {
      redirect: {
        destination: `/login?callbackUrl=${encodeURIComponent("/profil")}`,
        permanent: false,
      },
    };
  }

  const safeSession = {
    ...session,
    user: {
      id: session.user?.id ?? null,
      name: session.user?.name ?? null,
      email: session.user?.email ?? null,
      image: session.user?.image ?? null,
    },
  };

  return {
    props: {
      session: safeSession,
    },
  };
}

function ProfilPage({ session }: ProfilPageProps) {
  const { data: clientSession } = useSession();
  const displaySession = clientSession ?? session ?? null;
  const isAuthenticated = !!displaySession?.user;

  return (
    <Webpage>
      <Headline pageState={PageState.Profil} isAuthenticated={isAuthenticated} />
      <Profil />
    </Webpage>
  );
}

export default ProfilPage;
