'use client'; import { create } from 'zustand'; import { registerTenantHeaderBridge } from '@/lib/api/client'; const KEY = 'smart_tenant_id'; type TenantState = { /** 显式选择的租户;null 表示不额外传 X-Tenant-ID,由 Bearer 默认租户生效 */ tenantId: string | null; setTenantId: (id: string | null) => void; /** 从当前用户资料同步(登录后首次) */ hydrateFromUserTenant: (tenantId: string | undefined | null) => void; }; function load(): string | null { if (typeof window === 'undefined') { return null; } try { const raw = sessionStorage.getItem(KEY); if (raw === '' || raw === 'null') { return null; } return raw; } catch { return null; } } export const useTenantStore = create((set, get) => ({ tenantId: typeof window !== 'undefined' ? load() : null, setTenantId: (id) => { set({ tenantId: id }); if (typeof window !== 'undefined') { if (id) { sessionStorage.setItem(KEY, id); } else { sessionStorage.removeItem(KEY); } } }, hydrateFromUserTenant: (tid) => { if (!tid) { return; } const cur = get().tenantId; if (cur == null || cur === '') { set({ tenantId: tid }); if (typeof window !== 'undefined') { sessionStorage.setItem(KEY, tid); } } }, })); registerTenantHeaderBridge(() => useTenantStore.getState().tenantId);