fix: reset project caches on context switches

Reset project and repository-group loading, error, and initialized flags when contexts change so stale initialization state cannot suppress fresh context data.
This commit is contained in:
777genius 2026-05-24 00:23:17 +03:00
parent 192f2ea497
commit edcb0a7433

View file

@ -48,7 +48,13 @@ function getEmptyContextState(): Partial<AppState> {
return { return {
...getFullResetState(), ...getFullResetState(),
projects: [], projects: [],
projectsLoading: false,
projectsInitialized: false,
projectsError: null,
repositoryGroups: [], repositoryGroups: [],
repositoryGroupsLoading: false,
repositoryGroupsInitialized: false,
repositoryGroupsError: null,
sessions: [], sessions: [],
notifications: [], notifications: [],
unreadCount: 0, unreadCount: 0,
@ -148,8 +154,14 @@ function validateSnapshot(
return { return {
// Restored from snapshot (use fresh data for projects/repoGroups) // Restored from snapshot (use fresh data for projects/repoGroups)
projects: freshProjects, projects: freshProjects,
projectsLoading: false,
projectsInitialized: true,
projectsError: null,
selectedProjectId, selectedProjectId,
repositoryGroups: freshRepoGroups, repositoryGroups: freshRepoGroups,
repositoryGroupsLoading: false,
repositoryGroupsInitialized: true,
repositoryGroupsError: null,
selectedRepositoryId, selectedRepositoryId,
selectedWorktreeId, selectedWorktreeId,
viewMode: snapshot.viewMode, viewMode: snapshot.viewMode,
@ -306,7 +318,13 @@ export const createContextSlice: StateCreator<AppState, [], [], ContextSlice> =
if (targetSnapshot) { if (targetSnapshot) {
set({ set({
projects: targetSnapshot.projects, projects: targetSnapshot.projects,
projectsLoading: false,
projectsInitialized: true,
projectsError: null,
repositoryGroups: targetSnapshot.repositoryGroups, repositoryGroups: targetSnapshot.repositoryGroups,
repositoryGroupsLoading: false,
repositoryGroupsInitialized: true,
repositoryGroupsError: null,
selectedProjectId: targetSnapshot.selectedProjectId, selectedProjectId: targetSnapshot.selectedProjectId,
selectedRepositoryId: targetSnapshot.selectedRepositoryId, selectedRepositoryId: targetSnapshot.selectedRepositoryId,
selectedWorktreeId: targetSnapshot.selectedWorktreeId, selectedWorktreeId: targetSnapshot.selectedWorktreeId,
@ -360,7 +378,9 @@ export const createContextSlice: StateCreator<AppState, [], [], ContextSlice> =
set({ set({
...getEmptyContextState(), ...getEmptyContextState(),
projects: freshProjects, projects: freshProjects,
projectsInitialized: true,
repositoryGroups: freshRepoGroups, repositoryGroups: freshRepoGroups,
repositoryGroupsInitialized: true,
activeContextId: targetContextId, activeContextId: targetContextId,
isContextSwitching: false, isContextSwitching: false,
targetContextId: null, targetContextId: null,