// ============================================================
// auth-persistence — 本地认证偏好持久化（记住账号 / 自动登录）
//
// 职责：
//   - 存储/读取登录表单偏好（用户名回填、记住密码、自动登录标记）
//   - 纯 localStorage 操作，不依赖 React
//   - 密码从不持久化（安全性由 JWT + safeStorage 保障）
//
// 与 auth-token.ts 的分工：
//   auth-token.ts        → JWT token 生命周期（refresh/access，safeStorage 加密）
//   auth-persistence.ts  → 登录表单偏好（localStorage 明文，仅用户名/标记）
// ============================================================ */

const STORAGE_KEY = 'ele-heixiu-auth';

interface StoredAuth {
   /** 上次登录的用户名（表单回填用） */
   username: string;
   /** 是否记住用户名（勾选后表单自动回填用户名） */
   remember: boolean;
   /** 是否勾选了自动登录（AppProvider 据此决定启动时是否刷新 token） */
   autoLogin: boolean;
}

function readAuth(): StoredAuth | null {
   try {
      const raw = localStorage.getItem(STORAGE_KEY);
      if (!raw) return null;
      return JSON.parse(raw) as StoredAuth;
   } catch {
      return null;
   }
}

function writeAuth(auth: StoredAuth): void {
   try {
      localStorage.setItem(STORAGE_KEY, JSON.stringify(auth));
   } catch {
      /* 静默 */
   }
}

// ---------- 公共 API ----------

/** 读取自动登录标记（AppProvider 启动时调用） */
export function getAutoLoginFlag(): boolean {
   return readAuth()?.autoLogin || false;
}

/** 仅清除自动登录标记（保留用户名，下次还能回填表单） */
export function clearAutoLoginFlag(): void {
   const auth = readAuth();
   if (!auth) return;
   writeAuth({ ...auth, autoLogin: false });
}

/** 清除所有保存的认证偏好 */
export function clearSavedAuth(): void {
   try {
      localStorage.removeItem(STORAGE_KEY);
   } catch {
      /* 静默 */
   }
}

/** 保存认证偏好（登录成功时调用） */
export function saveAuth(username: string, remember: boolean, autoLogin: boolean): void {
   writeAuth({ username, remember, autoLogin });
}

/** 读取已保存的用户名（表单回填用） */
export function getSavedUsername(): string {
   return readAuth()?.username || '';
}

/** 读取记住密码标记 */
export function getSavedRemember(): boolean {
   return readAuth()?.remember || false;
}

/** 读取自动登录标记 */
export function getSavedAutoLogin(): boolean {
   return readAuth()?.autoLogin || false;
}
