import Cookies from "js-cookie";

const USER_COOKIE_KEY = "getUser";

export const getUserFromCookie = (): any | null => {
  const cookie = Cookies.get(USER_COOKIE_KEY);
  if (!cookie) return null;

  try {
    return JSON.parse(cookie);
  } catch (err) {
    console.error("Failed to parse user cookie", err);
    return null;
  }
};

const generateSessionId = () => {
  const sessionId = crypto.randomUUID(); // Or any random generator
  sessionStorage.setItem('session_id', sessionId);
  return sessionId;
};

export const getUserSessionId = () => {
  let sessionId = sessionStorage.getItem('session_id');
  if (!sessionId) {
    sessionId = generateSessionId();
    console.log('Generated new session_id:', sessionId);
  } else {
    console.log('Retrieved existing session_id:', sessionId);
  }
  return sessionId;
};


export const clearUserSessionId = () => {
  sessionStorage.removeItem('session_id');
};

export const userIdKey = () => {
  const user = getUserFromCookie();

  // return the user id if logged in, otherwise fall back to a session id
  return user && user.id ? user.id : null
}
