refactor(useUIController): group reads via useShallow, fetch setters from getState (P1-17)
Replace 11 individual useAppStore subscriptions with a single useShallow selector; setters read once from useAppStore.getState() (stable refs).
This commit is contained in:
1 parent
7f2d028080
commit
8dfa69cacf
1 file changed
+41
-22
@@ -1,4 +1,5 @@
|
|||||||
import { useCallback, useDeferredValue, useMemo } from "react";
|
import { useCallback, useDeferredValue, useMemo } from "react";
|
||||||
|
import { useShallow } from "zustand/shallow";
|
||||||
import type { AgentRecord, GoalRecord, ProjectRecord, RunRecord, SectionId, TaskRecord } from "@shared/types";
|
import type { AgentRecord, GoalRecord, ProjectRecord, RunRecord, SectionId, TaskRecord } from "@shared/types";
|
||||||
|
|
||||||
import { createTranslator } from "../i18n";
|
import { createTranslator } from "../i18n";
|
||||||
@@ -62,28 +63,46 @@ export function useUIController() {
|
|||||||
[sidebarNav, t],
|
[sidebarNav, t],
|
||||||
);
|
);
|
||||||
|
|
||||||
const section = useAppStore((s) => s.section);
|
const {
|
||||||
const setSection = useAppStore((s) => s.setSection);
|
section,
|
||||||
const consoleOpen = useAppStore((s) => s.consoleOpen);
|
consoleOpen,
|
||||||
const setConsoleOpen = useAppStore((s) => s.setConsoleOpen);
|
sidebarCollapsed,
|
||||||
const sidebarCollapsed = useAppStore((s) => s.sidebarCollapsed);
|
companySwitcherOpen,
|
||||||
const setSidebarCollapsed = useAppStore((s) => s.setSidebarCollapsed);
|
confirmDeleteCompanyId,
|
||||||
const companySwitcherOpen = useAppStore((s) => s.companySwitcherOpen);
|
taskViewMode,
|
||||||
const setCompanySwitcherOpen = useAppStore((s) => s.setCompanySwitcherOpen);
|
showOnboarding,
|
||||||
const confirmDeleteCompanyId = useAppStore((s) => s.confirmDeleteCompanyId);
|
initialOnboardingLocked,
|
||||||
const setConfirmDeleteCompanyId = useAppStore((s) => s.setConfirmDeleteCompanyId);
|
commandPaletteOpen,
|
||||||
const taskViewMode = useAppStore((s) => s.taskViewMode);
|
commandPaletteSearch,
|
||||||
const setTaskViewMode = useAppStore((s) => s.setTaskViewMode);
|
selectedPaletteIndex,
|
||||||
const showOnboarding = useAppStore((s) => s.showOnboarding);
|
} = useAppStore(
|
||||||
const setShowOnboarding = useAppStore((s) => s.setShowOnboarding);
|
useShallow((s) => ({
|
||||||
const initialOnboardingLocked = useAppStore((s) => s.initialOnboardingLocked);
|
section: s.section,
|
||||||
const setInitialOnboardingLocked = useAppStore((s) => s.setInitialOnboardingLocked);
|
consoleOpen: s.consoleOpen,
|
||||||
const commandPaletteOpen = useAppStore((s) => s.commandPaletteOpen);
|
sidebarCollapsed: s.sidebarCollapsed,
|
||||||
const setCommandPaletteOpen = useAppStore((s) => s.setCommandPaletteOpen);
|
companySwitcherOpen: s.companySwitcherOpen,
|
||||||
const commandPaletteSearch = useAppStore((s) => s.commandPaletteSearch);
|
confirmDeleteCompanyId: s.confirmDeleteCompanyId,
|
||||||
const setCommandPaletteSearch = useAppStore((s) => s.setCommandPaletteSearch);
|
taskViewMode: s.taskViewMode,
|
||||||
const selectedPaletteIndex = useAppStore((s) => s.selectedPaletteIndex);
|
showOnboarding: s.showOnboarding,
|
||||||
const setSelectedPaletteIndex = useAppStore((s) => s.setSelectedPaletteIndex);
|
initialOnboardingLocked: s.initialOnboardingLocked,
|
||||||
|
commandPaletteOpen: s.commandPaletteOpen,
|
||||||
|
commandPaletteSearch: s.commandPaletteSearch,
|
||||||
|
selectedPaletteIndex: s.selectedPaletteIndex,
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
const {
|
||||||
|
setSection,
|
||||||
|
setConsoleOpen,
|
||||||
|
setSidebarCollapsed,
|
||||||
|
setCompanySwitcherOpen,
|
||||||
|
setConfirmDeleteCompanyId,
|
||||||
|
setTaskViewMode,
|
||||||
|
setShowOnboarding,
|
||||||
|
setInitialOnboardingLocked,
|
||||||
|
setCommandPaletteOpen,
|
||||||
|
setCommandPaletteSearch,
|
||||||
|
setSelectedPaletteIndex,
|
||||||
|
} = useAppStore.getState();
|
||||||
|
|
||||||
const handleLocaleChange = useCallback(async (newLocale: AppLocale) => {
|
const handleLocaleChange = useCallback(async (newLocale: AppLocale) => {
|
||||||
useAppStore.getState().setLocale(newLocale);
|
useAppStore.getState().setLocale(newLocale);
|
||||||
|
|||||||
Reference in new issue
Block a user