// utils/storage.ts
const Cookies = require("js-cookie");
import { Cookie } from "lucide-react";

type StorageType = "local" | "session";

export function getStorageData<T = any>(
  key: string,
  type: StorageType = "session"
): T | null {
  try {
    const storage = type === "session" ? sessionStorage : localStorage;
    const data = storage.getItem(key);
    return data ? (JSON.parse(data) as T) : null;
  } catch (error) {
    console.error(`Error getting ${type}Storage item '${key}':`, error);
    return null;
  }
}

export function getSessionData() {
  try {
    if (typeof sessionStorage !== "undefined") {
      const userid = sessionStorage.getItem("userid") ?? Cookies.get("userid");
      const token =
        sessionStorage.getItem("accessToken") ?? Cookies.get("accessToken");
      const firstName = sessionStorage.getItem("firstName");
      const lastName = sessionStorage.getItem("lastName");
      const country = sessionStorage.getItem("country");
      const goldBalance = sessionStorage.getItem("balance") ?? "";
      const walBalance = sessionStorage.getItem("walBalance") ?? "";
      const bonusBalance = sessionStorage.getItem("bonusBalance") ?? "";
      const email = sessionStorage.getItem("email") ?? "";
      const phone = sessionStorage.getItem("phone") ?? "";
      return {
        userid,
        token,
        firstName,
        lastName,
        country,
        goldBalance,
        walBalance,
        bonusBalance,
        email,
        phone,
      };
    }
  } catch (error) {
    console.error(`Error getting session data:`, error);
  }
  return null;
}
export function setSession(data: any) {
  try {
    if (typeof sessionStorage !== "undefined") {
      Object.entries(data).forEach(([key, value]) => {
        sessionStorage.setItem(key, value);
      });
    }
  } catch (e) {
    console.error(`Error setting session data:`, e);
  }
}

export function clearSession(data: any) {
  try {
    if (typeof sessionStorage !== "undefined") {
      Object.entries(data).forEach(([key]) => {
        console.log("sessionKey:", key);
        sessionStorage.removeItem(key);
      });
      return true;
    }
  } catch (e) {
    console.error(`Error setting session data:`, e);
  }
}
