refactor: remove redundant archived project filters (#10177)

This commit is contained in:
Nicky Leach 2026-07-24 08:34:30 -07:00 committed by GitHub
parent 965a827ee7
commit 2002c4fff3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 8 additions and 10 deletions

View File

@ -132,7 +132,7 @@ export function CommandPalette() {
enabled: !!selectedCompanyId && open,
});
const projects = useMemo(
() => allProjects.filter((p) => !p.archivedAt),
() => allProjects,
[allProjects],
);

View File

@ -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({

View File

@ -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";
}),

View File

@ -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();
});

View File

@ -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" }),
);

View File

@ -614,7 +614,7 @@ export function CompanyExport() {
[agents],
);
const visibleProjects = useMemo(
() => projects.filter((project: Project) => !project.archivedAt),
() => projects,
[projects],
);
const { orderedAgents } = useAgentOrder({

View File

@ -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({

View File

@ -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(