diff --git a/apps/web/src/components/layout/PageHeader.tsx b/apps/web/src/components/layout/PageHeader.tsx index 112cea07..62ee230d 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 903608fd..1f9f090b 100644 --- a/apps/web/src/pages/IssueListPage.tsx +++ b/apps/web/src/pages/IssueListPage.tsx @@ -220,11 +220,12 @@ export function IssueListPage() { setMembers(mem); }) .catch((err) => { + // 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; console.error('Critical error when loading Project or Workspace : ', err); - if (!cancelled) { - setWorkspace(null); - setProject(null); - } + setWorkspace(null); + setProject(null); }) .finally(() => { if (!cancelled) setLoading(false); diff --git a/apps/web/src/pages/ProjectsListPage.tsx b/apps/web/src/pages/ProjectsListPage.tsx index fd3d28a1..f93ac40a 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(() => {