import secureLocalStorage from "react-secure-storage";

/**
 * Servicio para manejar la obtención del token JWT desde el almacenamiento local.
 * Este archivo puede evolucionar a un AuthService más completo en el futuro.
 */

/**
 * Clave utilizada en el almacenamiento local para el token JWT.
 */

const TOKEN_STORAGE_KEY = "factuges.auth";

/**
 * Obtiene el token JWT almacenado localmente.
 *
 * @returns El token como string, o null si no está disponible.
 */
export const getAccessToken = (): string | null => {
  const authInfo = secureLocalStorage.getItem(TOKEN_STORAGE_KEY) as { token?: string } | null;
  return typeof authInfo?.token === "string" ? authInfo.token : null;
};

/**
 * Almacena el token JWT localmente.
 *
 * @params El token como string.
 */
export const setAccessToken = (token: string): void => {
  secureLocalStorage.setItem(TOKEN_STORAGE_KEY, token);
};

setAccessToken;

/**
 * Limpia el token JWT del almacenamiento local.
 */
export const clearAccessToken = (): void => {
  secureLocalStorage.removeItem(TOKEN_STORAGE_KEY);
};
