Scrum4Me/stores/user-settings/selectors.ts
Madhura68 bb6a898233 feat(PBI-76): user-settings zustand store with optimistic flow
Hydrate from prop (SSR-correct), setPref via path with optimistic
update + rollback on server error, applyServerPatch for SSE-driven
cross-tab updates. Demo accounts skip server-write entirely.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 11:36:35 +02:00

23 lines
787 B
TypeScript

import type { UserSettings } from '@/lib/user-settings'
interface StateLike {
entities: { settings: UserSettings }
context: { hydrated: boolean; isDemo: boolean }
}
export const selectSprintBacklogPrefs = (s: StateLike) =>
s.entities.settings.views?.sprintBacklog ?? {}
export const selectPbiListPrefs = (s: StateLike) =>
s.entities.settings.views?.pbiList ?? {}
export const selectStoryPanelPrefs = (s: StateLike) =>
s.entities.settings.views?.storyPanel ?? {}
export const selectJobsColumnPrefs = (key: string) => (s: StateLike) =>
s.entities.settings.views?.jobsColumns?.[key] ?? { kinds: [], statuses: [] }
export const selectDevToolsPrefs = (s: StateLike) =>
s.entities.settings.devTools ?? {}
export const selectHydrated = (s: StateLike) => s.context.hydrated