63 lines
1.8 KiB
Markdown
63 lines
1.8 KiB
Markdown
# 50. Create Global State Store (Signals)
|
|
|
|
meta:
|
|
id: podcast-tui-app-50
|
|
feature: podcast-tui-app
|
|
priority: P0
|
|
depends_on: [49]
|
|
tags: [state-management, global-store, signals, solidjs]
|
|
|
|
objective:
|
|
- Create global state store using SolidJS Signals
|
|
- Manage application-wide state
|
|
- Provide state to all components
|
|
- Handle state updates and persistence
|
|
|
|
deliverables:
|
|
- `src/stores/appStore.ts` with global state store
|
|
- `src/stores/feedStore.ts` with feed state
|
|
- `src/stores/playerStore.ts` with player state
|
|
- `src/stores/searchStore.ts` with search state
|
|
|
|
steps:
|
|
- Create `src/stores/appStore.ts`:
|
|
- Use SolidJS signals for global state
|
|
- Store application state: currentTab, isAuthEnabled, settings
|
|
- Provide state to all child components
|
|
- Update state when needed
|
|
- Create `src/stores/feedStore.ts`:
|
|
- Signals for feeds array
|
|
- Signals for selectedFeed
|
|
- Methods: addFeed, removeFeed, updateFeed
|
|
- Create `src/stores/playerStore.ts`:
|
|
- Signals for currentEpisode
|
|
- Signals for playbackState
|
|
- Methods: play, pause, seek, setSpeed
|
|
- Create `src/stores/searchStore.ts`:
|
|
- Signals for searchResults
|
|
- Signals for searchHistory
|
|
- Methods: search, addToHistory, clearHistory
|
|
|
|
tests:
|
|
- Unit: Test store methods update signals correctly
|
|
- Unit: Test state persistence
|
|
- Integration: Test state updates across components
|
|
|
|
acceptance_criteria:
|
|
- Global state store manages all app state
|
|
- Store methods update signals correctly
|
|
- State persists across component re-renders
|
|
- State updates propagate to UI
|
|
|
|
validation:
|
|
- Run application and verify state is initialized
|
|
- Modify state and verify UI updates
|
|
- Restart app and verify state persistence
|
|
|
|
notes:
|
|
- Use SolidJS `createSignal` for reactivity
|
|
- Store should be singleton pattern
|
|
- Use `createStore` if complex state needed
|
|
- Keep store simple and focused
|
|
- Store state in localStorage
|