Files
AgentCompany/src/renderer/state/hooks.ts
T
ZacharyZhang-NYandClaude Opus 4.6 5e9d36c058 feat(01-01): create Zustand store with 6 slices, IPC batcher, and unit tests
- Install zustand 5.x and immer 11.x dependencies
- Create 6 Zustand slices: navigation, company, selection, ui, communication, social
- Create combined store with devtools + immer middleware
- Create IPC event batcher with 50ms debounce window (schedule/flush/dispose)
- Create typed selector hooks for narrow state subscriptions
- Add 14 unit tests covering store initialization, slice behaviors, and batcher timing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 01:30:37 -04:00

48 lines
2.2 KiB
TypeScript

import { useAppStore } from "./store";
// Navigation slice selectors
export const useSection = () => useAppStore((s) => s.section);
export const useSetSection = () => useAppStore((s) => s.setSection);
export const useNavigateTo = () => useAppStore((s) => s.navigateTo);
export const useCommandPaletteOpen = () =>
useAppStore((s) => s.commandPaletteOpen);
export const useConsoleOpen = () => useAppStore((s) => s.consoleOpen);
export const useSidebarCollapsed = () =>
useAppStore((s) => s.sidebarCollapsed);
// Company slice selectors
export const useSnapshot = () => useAppStore((s) => s.snapshot);
export const useCurrentCompanyId = () =>
useAppStore((s) => s.currentCompanyId);
export const useError = () => useAppStore((s) => s.error);
export const useInboxItems = () => useAppStore((s) => s.inboxItems);
export const useCompanyMetrics = () => useAppStore((s) => s.companyMetrics);
export const useStandupReport = () => useAppStore((s) => s.standupReport);
export const useBadges = () => useAppStore((s) => s.badges);
// Selection slice selectors
export const useSelectedTaskId = () => useAppStore((s) => s.selectedTaskId);
export const useSelectedAgentId = () =>
useAppStore((s) => s.selectedAgentId);
export const useSelectedApprovalId = () =>
useAppStore((s) => s.selectedApprovalId);
export const useSelectedRunId = () => useAppStore((s) => s.selectedRunId);
export const useSelectedGoalId = () => useAppStore((s) => s.selectedGoalId);
export const useSelectedProjectId = () =>
useAppStore((s) => s.selectedProjectId);
export const useSelectedWorkspaceId = () =>
useAppStore((s) => s.selectedWorkspaceId);
export const useSelectedConnectorId = () =>
useAppStore((s) => s.selectedConnectorId);
export const useSelectedCommunicationEntityId = () =>
useAppStore((s) => s.selectedCommunicationEntityId);
// UI slice selectors
export const useLocale = () => useAppStore((s) => s.locale);
export const useShowOnboarding = () => useAppStore((s) => s.showOnboarding);
export const useTaskViewMode = () => useAppStore((s) => s.taskViewMode);
// Social slice selectors
export const useSocialAccounts = () => useAppStore((s) => s.socialAccounts);
export const useBrowserActions = () => useAppStore((s) => s.browserActions);