import type { AuthUser } from "@/domain/auth/types/auth-user"; const AUTH_STORAGE_KEY = "auth"; function parseExpiration(expiration: string): number | null { const asNumber = Number(expiration); if (!Number.isNaN(asNumber) && asNumber > 0) { return asNumber > 1e12 ? asNumber : asNumber * 1000; } const parsed = Date.parse(expiration); return Number.isNaN(parsed) ? null : parsed; } export function setAuthUser(user: AuthUser): void { if (typeof window === "undefined") { return; } localStorage.setItem(AUTH_STORAGE_KEY, JSON.stringify(user)); } export function getAuthUser(): AuthUser | null { if (typeof window === "undefined") { return null; } const raw = localStorage.getItem(AUTH_STORAGE_KEY); if (!raw) { return null; } try { return JSON.parse(raw) as AuthUser; } catch { return null; } } export function getAccessToken(): string | null { const user = getAuthUser(); if (!user?.token || typeof user.token !== "string") { return null; } return `Bearer ${user.token}`; } export function clearAuth(): void { if (typeof window === "undefined") { return; } localStorage.removeItem(AUTH_STORAGE_KEY); } export function isSessionValid(user: AuthUser | null): boolean { if (!user?.token || !user.expiration) { return false; } const expiresAt = parseExpiration(user.expiration); if (expiresAt === null) { return false; } return Date.now() < expiresAt; }