import { getStoredUser } from "./persistAuth";

const PREMIUM_KEY = "dt_premium";

/** Store premium status after a successful purchase */
export function setPremiumStatus(isPremium: boolean) {
  if (typeof window === "undefined") return;
  if (isPremium) {
    localStorage.setItem(PREMIUM_KEY, "1");
  } else {
    localStorage.removeItem(PREMIUM_KEY);
  }
}

/** Read premium status from localStorage (set after successful payment) */
export function getPremiumStatus(): boolean {
  if (typeof window === "undefined") return false;
  return localStorage.getItem(PREMIUM_KEY) === "1";
}

export function isLoggedIn(): boolean {
  return !!(getStoredUser()?.id);
}

/** Permission levels: "guest" | "free" | "premium" */
export type PermissionLevel = "guest" | "free" | "premium";

export function getPermissionLevel(): PermissionLevel {
  if (!isLoggedIn()) return "guest";
  if (getPremiumStatus()) return "premium";
  return "free";
}

/** Returns the message and redirect path when an action is blocked */
export function getBlockReason(action: string, level: PermissionLevel): { message: string; redirect: string } | null {
  if (level === "guest") {
    return { message: `Sign in to ${action}`, redirect: "/login" };
  }
  return null;
}

/** Returns block reason for premium-only content */
export function getPremiumBlockReason(level: PermissionLevel): { message: string; redirect: string } | null {
  if (level === "guest") {
    return { message: "Sign in to view this content", redirect: "/login" };
  }
  if (level === "free") {
    return { message: "Subscribe to access premium content", redirect: "/subscribe" };
  }
  return null; // premium — no block
}
