"use client";
import { useMemo } from "react";
import { SessionType } from "@/interfaces/types";
import { useSelector } from "react-redux";
import { RootState } from "@/store/store";
import cookies from "js-cookie";

export default function UseSession(): SessionType | null {
  const { session } = useSelector((state: RootState) => state.AuthConfig);
  const token = cookies.get("token");

  const parsedSession = useMemo(() => {
    try {
      if (!session) return null;

      let sessionData: SessionType;
      if (typeof session === "string") {
        sessionData = JSON.parse(session) as SessionType;
      } else {
        sessionData = session as unknown as SessionType;
      }
      const mappedSession: Partial<SessionType> = { ...sessionData };
      if (mappedSession.token || token) return mappedSession as SessionType;
      return null;
    } catch (error) {
      console.error("Error parsing session:", error);
      return null;
    }
  }, [session]);

  return parsedSession;
}
