From 2002c4fff3b05796db725efd2ec5a27eca83ce28 Mon Sep 17 00:00:00 2001 From: Nicky Leach Date: Fri, 24 Jul 2026 08:34:30 -0700 Subject: [PATCH] refactor: remove redundant archived project filters (#10177) --- ui/src/components/CommandPalette.tsx | 2 +- ui/src/components/NewIssueDialog.tsx | 2 +- ui/src/components/SidebarProjects.tsx | 1 - ui/src/components/SidebarStarredProjects.test.tsx | 5 ++--- ui/src/components/SidebarStarredProjects.tsx | 2 +- ui/src/pages/CompanyExport.tsx | 2 +- ui/src/pages/PipelineSettings.tsx | 2 +- ui/src/pages/Projects.tsx | 2 +- 8 files changed, 8 insertions(+), 10 deletions(-) diff --git a/ui/src/components/CommandPalette.tsx b/ui/src/components/CommandPalette.tsx index c83c429ea2..320547f2ff 100644 --- a/ui/src/components/CommandPalette.tsx +++ b/ui/src/components/CommandPalette.tsx @@ -132,7 +132,7 @@ export function CommandPalette() { enabled: !!selectedCompanyId && open, }); const projects = useMemo( - () => allProjects.filter((p) => !p.archivedAt), + () => allProjects, [allProjects], ); diff --git a/ui/src/components/NewIssueDialog.tsx b/ui/src/components/NewIssueDialog.tsx index 38636c9792..43a33acd9d 100644 --- a/ui/src/components/NewIssueDialog.tsx +++ b/ui/src/components/NewIssueDialog.tsx @@ -520,7 +520,7 @@ export function NewIssueDialog() { }); const currentUserId = session?.user?.id ?? session?.session?.userId ?? null; const activeProjects = useMemo( - () => (projects ?? []).filter((p) => !p.archivedAt), + () => projects ?? [], [projects], ); const { orderedProjects } = useProjectOrder({ diff --git a/ui/src/components/SidebarProjects.tsx b/ui/src/components/SidebarProjects.tsx index e5d28c5f2a..2a7abdeb2d 100644 --- a/ui/src/components/SidebarProjects.tsx +++ b/ui/src/components/SidebarProjects.tsx @@ -291,7 +291,6 @@ export function SidebarProjects() { const visibleProjects = useMemo( () => (projects ?? []).filter((project: Project) => { - if (project.archivedAt) return false; if (!membershipsQuery.isSuccess) return true; return resourceMembershipState(membershipsQuery.data, "project", project.id) !== "left"; }), diff --git a/ui/src/components/SidebarStarredProjects.test.tsx b/ui/src/components/SidebarStarredProjects.test.tsx index fcce78b718..8b58d468c2 100644 --- a/ui/src/components/SidebarStarredProjects.test.tsx +++ b/ui/src/components/SidebarStarredProjects.test.tsx @@ -165,17 +165,16 @@ describe("SidebarStarredProjects", () => { await flushReact(); } - it("renders only starred, non-archived projects with a quiet unstar control", async () => { + it("renders only starred projects returned by the default active project list", async () => { mockProjectsApi.list.mockResolvedValue([ makeProject({ id: "project-a", name: "Alpha", urlKey: "alpha" }), makeProject({ id: "project-b", name: "Bravo", urlKey: "bravo" }), - makeProject({ id: "project-c", name: "Ghost", urlKey: "ghost", archivedAt: new Date() }), ]); memberships = { ...memberships, starredProjectIds: ["project-b", "project-c"] }; await render(); - // Only the starred, non-archived project renders (archived "Ghost" is filtered out). + // project-c is starred but absent because the default project list is server-filtered. expect(projectLinkLabels(container)).toEqual(["Bravo"]); expect(document.body.querySelector('button[aria-label="Unstar Bravo"]')).not.toBeNull(); }); diff --git a/ui/src/components/SidebarStarredProjects.tsx b/ui/src/components/SidebarStarredProjects.tsx index 38bd96adcf..264be97716 100644 --- a/ui/src/components/SidebarStarredProjects.tsx +++ b/ui/src/components/SidebarStarredProjects.tsx @@ -63,7 +63,7 @@ export function SidebarStarredProjects() { const byId = new Map((projects ?? []).map((project: Project) => [project.id, project])); return Array.from(starredIds) .map((id) => byId.get(id)) - .filter((project): project is Project => !!project && !project.archivedAt) + .filter((project): project is Project => !!project) .sort((left, right) => left.name.localeCompare(right.name, undefined, { sensitivity: "base" }), ); diff --git a/ui/src/pages/CompanyExport.tsx b/ui/src/pages/CompanyExport.tsx index bad6bc3dce..dd8c61c818 100644 --- a/ui/src/pages/CompanyExport.tsx +++ b/ui/src/pages/CompanyExport.tsx @@ -614,7 +614,7 @@ export function CompanyExport() { [agents], ); const visibleProjects = useMemo( - () => projects.filter((project: Project) => !project.archivedAt), + () => projects, [projects], ); const { orderedAgents } = useAgentOrder({ diff --git a/ui/src/pages/PipelineSettings.tsx b/ui/src/pages/PipelineSettings.tsx index dfbd6d53df..eec8bacb6b 100644 --- a/ui/src/pages/PipelineSettings.tsx +++ b/ui/src/pages/PipelineSettings.tsx @@ -1372,7 +1372,7 @@ export function PipelineSettings() { }); const currentUserId = sessionQuery.data?.user?.id ?? sessionQuery.data?.session?.userId ?? null; const activeProjects = useMemo( - () => (projectsQuery.data ?? []).filter((project) => !project.archivedAt), + () => projectsQuery.data ?? [], [projectsQuery.data], ); const { orderedProjects } = useProjectOrder({ diff --git a/ui/src/pages/Projects.tsx b/ui/src/pages/Projects.tsx index 0cb9445de7..50c5133c82 100644 --- a/ui/src/pages/Projects.tsx +++ b/ui/src/pages/Projects.tsx @@ -95,7 +95,7 @@ export function Projects() { const membershipsQuery = useResourceMemberships(selectedCompanyId); const membershipMutation = useResourceMembershipMutation(selectedCompanyId); const projects = useMemo( - () => (allProjects ?? []).filter((p) => !p.archivedAt), + () => allProjects ?? [], [allProjects], ); const sortedProjects = useMemo(