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>
23 lines
787 B
TypeScript
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
|