diff --git a/apps/web/src/components/layout/PageHeader.tsx b/apps/web/src/components/layout/PageHeader.tsx index 112cea0..62ee230 100644 --- a/apps/web/src/components/layout/PageHeader.tsx +++ b/apps/web/src/components/layout/PageHeader.tsx @@ -71,7 +71,8 @@ export function PageHeader() { if (!cancelled && list) setProjects(list); }) .catch(() => { - if (!cancelled) setWorkspace(null); + if (cancelled) return; + setWorkspace(null); setProjects([]); }); return () => { @@ -98,7 +99,8 @@ export function PageHeader() { if (!cancelled && Array.isArray(issues)) setProjectIssueCount(issues.length); }) .catch(() => { - if (!cancelled) setProject(null); + if (cancelled) return; + setProject(null); setProjectIssueCount(0); }); return () => { diff --git a/apps/web/src/pages/IssueListPage.tsx b/apps/web/src/pages/IssueListPage.tsx index e9502f9..f34a734 100644 --- a/apps/web/src/pages/IssueListPage.tsx +++ b/apps/web/src/pages/IssueListPage.tsx @@ -205,7 +205,10 @@ export function IssueListPage() { setMembers(mem ?? []); }) .catch(() => { - if (!cancelled) setWorkspace(null); + // Guard the whole reset: a stale request rejecting after the user + // switched projects must not wipe the newly-loaded project's data. + if (cancelled) return; + setWorkspace(null); setProject(null); setProjects([]); setIssues([]); diff --git a/apps/web/src/pages/ProjectsListPage.tsx b/apps/web/src/pages/ProjectsListPage.tsx index fd3d28a..f93ac40 100644 --- a/apps/web/src/pages/ProjectsListPage.tsx +++ b/apps/web/src/pages/ProjectsListPage.tsx @@ -113,7 +113,8 @@ export function ProjectsListPage() { if (!cancelled && list) setAllProjects(list); }) .catch(() => { - if (!cancelled) setWorkspace(null); + if (cancelled) return; + setWorkspace(null); setAllProjects([]); }) .finally(() => {