"use client";

import * as React from "react";
import { SessionProvider as NextAuthSessionProvider } from "next-auth/react";
import type { Session } from "next-auth";
import { seedCachedSession } from "@/api/session-cache";
import { NEXT_AUTH_BASE_PATH } from "@/lib/next-auth-path";
import { SessionTimeoutGuard } from "../SessionTimeoutGuard";

export function SessionProvider({
  children,
  session,
}: {
  children: React.ReactNode;
  session?: Session | null;
}) {
  React.useLayoutEffect(() => {
    if (session) {
      seedCachedSession(session);
    }
  }, [session]);

  return (
    <NextAuthSessionProvider
      basePath={NEXT_AUTH_BASE_PATH}
      session={session}
      refetchInterval={0}
      refetchOnWindowFocus={false}
    >
      <SessionTimeoutGuard />
      {children}
    </NextAuthSessionProvider>
  );
}
