/**
 * AI 助理面板显隐的 localStorage 读写（与钉住常用查询类似：按维度分 key，互不覆盖）。
 * key 格式：`${userId}_${tableId}_agent`，值为 `'true'` / `'false'` 字符串。
 */
import { getAgentUserIdForStorageKey } from './user-utils';
/** 拼接显隐条目的 localStorage key。 */
export function buildAgentVisibilityStorageKey(userId, tableId) {
    return `${userId}_${tableId}_agent`;
}
/**
 * 读取显隐；无记录或非法值时返回 `null`，由调用方决定默认是否显示。
 * SSR 或无 `window` 时返回 `null`。
 */
export function readAgentVisibilityFromStorage(storageKey) {
    if (typeof window === 'undefined')
        return null;
    try {
        const raw = window.localStorage.getItem(storageKey);
        if (raw === null)
            return null;
        if (raw === 'true')
            return true;
        if (raw === 'false')
            return false;
        return null;
    }
    catch {
        return null;
    }
}
/** 写入显隐；隐私模式、存储配额满等异常时静默失败。 */
export function writeAgentVisibilityToStorage(storageKey, visible) {
    if (typeof window === 'undefined')
        return;
    try {
        window.localStorage.setItem(storageKey, visible ? 'true' : 'false');
    }
    catch {
        // 隐私模式或配额满时忽略
    }
}
/**
 * 从 localStorage 读取当前用户下某表格的助理显隐（无记录或无法解析用户时返回 null）。
 * 用于业务在挂载前初始化 state（一般无需调用，优先使用 CnAiAgent 非受控 + `id`）。
 */
export function getStoredAgentVisibility(tableId, userId) {
    if (!tableId)
        return null;
    const uid = getAgentUserIdForStorageKey(userId);
    if (uid == null)
        return null;
    return readAgentVisibilityFromStorage(buildAgentVisibilityStorageKey(uid, String(tableId).trim()));
}
