From d6efffd29da5e20ee98645c3ae9fffacfc441328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Salavisa?= Date: Wed, 28 Jan 2026 17:35:18 +0000 Subject: [PATCH] Fix: Approval button not showing when navigating between sessions (#116) --- .../lib/state/slices/session/session-slice.ts | 25 ++++--------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/apps/web/lib/state/slices/session/session-slice.ts b/apps/web/lib/state/slices/session/session-slice.ts index 88ba70ead5..7581fc1b10 100644 --- a/apps/web/lib/state/slices/session/session-slice.ts +++ b/apps/web/lib/state/slices/session/session-slice.ts @@ -167,31 +167,16 @@ export const createSessionSlice: StateCreator< }), setTaskSessionsForTask: (taskId, sessions) => set((draft) => { - // Also update individual session items with merging to preserve existing data - sessions.forEach((session) => { - const existingSession = draft.taskSessions.items[session.id]; - draft.taskSessions.items[session.id] = existingSession - ? { ...existingSession, ...session } - : session; - }); + // Update taskSessionsByTask with the new sessions list draft.taskSessionsByTask.itemsByTaskId[taskId] = sessions; draft.taskSessionsByTask.loadingByTaskId[taskId] = false; draft.taskSessionsByTask.loadedByTaskId[taskId] = true; + // Also populate taskSessions.items for individual session lookups - // This ensures agent_profile_snapshot is available when accessed by session ID + // When loading from API, we get complete session data, so we can replace entirely + // This ensures all fields including review_status and workflow_step_id are properly set for (const session of sessions) { - const existing = draft.taskSessions.items[session.id]; - if (existing) { - // Merge new data with existing, preserving agent_profile_snapshot if not provided - draft.taskSessions.items[session.id] = { - ...existing, - ...session, - // Preserve existing snapshot if new session doesn't have one - agent_profile_snapshot: session.agent_profile_snapshot ?? existing.agent_profile_snapshot, - }; - } else { - draft.taskSessions.items[session.id] = session; - } + draft.taskSessions.items[session.id] = session; } }), setTaskSessionsLoading: (taskId, loading) =>