Files
UTMS-NG-FE/store/tenantStore.ts
2026-04-21 06:30:48 +07:00

32 lines
908 B
TypeScript

import { create } from "zustand";
type TenantState = {
tenantId: string;
availableTenants: string[];
};
type TenantAction = {
setTenantId: (tenantId: string) => void;
hydrate: () => void;
};
const STORAGE_KEY = "utms-ng-tenant";
const fallbackTenants = ["acme", "global", "demo"];
export const useTenantStore = create<TenantState & TenantAction>((set, get) => ({
tenantId: process.env.NEXT_PUBLIC_DEFAULT_TENANT || "acme",
availableTenants: Array.from(
new Set([process.env.NEXT_PUBLIC_DEFAULT_TENANT || "acme", ...fallbackTenants])
),
setTenantId: (tenantId) => {
set({ tenantId });
if (typeof window !== "undefined") localStorage.setItem(STORAGE_KEY, tenantId);
},
hydrate: () => {
if (typeof window === "undefined") return;
const raw = localStorage.getItem(STORAGE_KEY);
if (raw) set({ tenantId: raw });
else set({ tenantId: get().tenantId });
}
}));