ultisuite-client/lib/stores/compose-identities-store.ts
2026-05-25 13:52:40 +02:00

38 lines
1.1 KiB
TypeScript

'use client'
import { create } from 'zustand'
import type { Identity } from '@/lib/compose-context'
type ComposeIdentitiesState = {
identities: Identity[]
hydrated: boolean
}
type ComposeIdentitiesActions = {
hydrateFromApi: (identities: Identity[]) => void
clear: () => void
}
export const useComposeIdentitiesStore = create<
ComposeIdentitiesState & ComposeIdentitiesActions
>()((set) => ({
identities: [],
hydrated: false,
hydrateFromApi: (identities) => set({ identities, hydrated: true }),
clear: () => set({ identities: [], hydrated: false }),
}))
export function getComposeIdentities(): Identity[] {
return useComposeIdentitiesStore.getState().identities
}
export function getDefaultComposeIdentity(accountId?: string | null): Identity | null {
const identities = getComposeIdentities()
if (identities.length === 0) return null
if (accountId) {
const scoped = identities.filter((i) => i.accountId === accountId)
return scoped.find((i) => i.isDefault) ?? scoped[0] ?? null
}
return identities.find((i) => i.isDefault) ?? identities[0] ?? null
}