import { create } from 'zustand'; import { persist } from 'zustand/middleware'; import portalApi from './portal-api'; interface PortalSubscriber { accountNumber: string; firstName: string; lastName: string; } interface PortalAuthState { subscriber: PortalSubscriber | null; portalToken: string | null; tenantSlug: string | null; isAuthenticated: boolean; login: (tenantSlug: string, accountNumber: string, password: string) => Promise; logout: () => void; } export const usePortalAuthStore = create()( persist( (set) => ({ subscriber: null, portalToken: null, tenantSlug: null, isAuthenticated: false, login: async (tenantSlug, accountNumber, password) => { const res = await portalApi.post('/api/v1/portal/auth/login', { tenantSlug, accountNumber, password, }); const { token, subscriber } = res.data; localStorage.setItem('portal_token', token); set({ portalToken: token, tenantSlug, subscriber: { accountNumber: subscriber.accountNumber, firstName: subscriber.firstName, lastName: subscriber.lastName, }, isAuthenticated: true, }); }, logout: () => { localStorage.removeItem('portal_token'); set({ subscriber: null, portalToken: null, tenantSlug: null, isAuthenticated: false }); }, }), { name: 'portal_auth' } ) );