fix(renderer): use snapshot.currentCompanyId as single source of truth (D-03)

CompanySlice's standalone currentCompanyId field + setCurrentCompanyId action
were never written by any caller, so useDesktopEvents.ts read null and fell
through to full refresh for every entity event -- the granular patch
machinery was dead code.

- Remove currentCompanyId field + setCurrentCompanyId from CompanySlice
- refreshBadges reads from snapshot.currentCompanyId
- useDesktopEvents reads companyId from snapshot.currentCompanyId
- Update store unit test to seed snapshot instead of calling removed action
This commit is contained in:
ZacharyZhang-NY committed 2026-04-16 21:56:40 -04:00
1 parent a130dc29f5
commit 0119872db6
3 files changed
+4 -11

No files matched your search

+1 -1
View File
@@ -13,7 +13,7 @@ export function useDesktopEvents(
const store = useAppStore;
async function handleGranularBatch(events: GranularEventEntry[]) {
const companyId = store.getState().currentCompanyId;
const companyId = store.getState().snapshot?.currentCompanyId ?? null;
if (!companyId) {
void refreshRef.current();
return;
+1 -8
View File
@@ -14,14 +14,12 @@ import type { SidebarBadges } from "@shared/contracts";
export interface CompanySlice {
snapshot: ProfileSnapshot | null;
currentCompanyId: string | null;
companyMetrics: CompanyMetrics | null;
standupReport: StandupReport | null;
inboxItems: InboxItem[];
badges: SidebarBadges | null;
error: string | null;
setSnapshot: (snapshot: ProfileSnapshot | null) => void;
setCurrentCompanyId: (id: string | null) => void;
setCompanyMetrics: (metrics: CompanyMetrics | null) => void;
setStandupReport: (report: StandupReport | null) => void;
setInboxItems: (items: InboxItem[]) => void;
@@ -46,7 +44,6 @@ export const createCompanySlice: StateCreator<
CompanySlice
> = (set, get) => ({
snapshot: null,
currentCompanyId: null,
companyMetrics: null,
standupReport: null,
inboxItems: [],
@@ -56,10 +53,6 @@ export const createCompanySlice: StateCreator<
set((state) => {
state.snapshot = snapshot;
}),
setCurrentCompanyId: (id) =>
set((state) => {
state.currentCompanyId = id;
}),
setCompanyMetrics: (metrics) =>
set((state) => {
state.companyMetrics = metrics;
@@ -166,7 +159,7 @@ export const createCompanySlice: StateCreator<
}),
refreshBadges: async () => {
const companyId = get().currentCompanyId;
const companyId = get().snapshot?.currentCompanyId ?? null;
if (!companyId) return;
try {
const result = await window.agentCompany.getSidebarBadges(companyId);
+2 -2
View File
@@ -495,8 +495,8 @@ describe("CompanySlice patch methods", () => {
const mockBadges = { tasks: 5, approvals: 2, runs: 0, messages: 3 };
mockGetSidebarBadges.mockResolvedValue({ ok: true, data: mockBadges });
// Set current company ID first
useAppStore.getState().setCurrentCompanyId("company-1");
// Seed snapshot with currentCompanyId -- refreshBadges reads from snapshot
useAppStore.getState().setSnapshot(makeSnapshot());
await useAppStore.getState().refreshBadges();