import React from "react";
import { vi } from "vitest";

type SessionState = {
  data: { user?: { name?: string | null; email?: string | null } } | null;
  status: "authenticated" | "unauthenticated" | "loading";
};

const defaultSession: SessionState = {
  data: null,
  status: "unauthenticated",
};

let sessionState: SessionState = { ...defaultSession };

export const __setSession = (partial: Partial<SessionState>) => {
  sessionState = { ...sessionState, ...partial };
};

export const __resetSession = () => {
  sessionState = { ...defaultSession };
};

export const useSession = () => sessionState;

export const signIn = vi.fn();
export const signOut = vi.fn();
export const SessionProvider: React.FC<React.PropsWithChildren> = ({ children }) =>
  React.createElement(React.Fragment, null, children);
