Fix unreleased bug where workstations is not selected on controls page (#43893)

This commit is contained in:
Luke Heath
2026-04-22 10:19:05 -05:00
committed by GitHub
parent 993039e5f8
commit 409433ff81
2 changed files with 81 additions and 7 deletions
+64
View File
@@ -0,0 +1,64 @@
import { preferredOrLowestIdFleet } from "./useTeamIdParam";
describe("preferredOrLowestIdFleet", () => {
it('returns "Workstations" when present', () => {
const fleets = [
{ id: 1, name: "Alpha" },
{ id: 2, name: "Workstations" },
{ id: 3, name: "Zebra" },
];
expect(preferredOrLowestIdFleet(fleets)).toEqual({
id: 2,
name: "Workstations",
});
});
it('returns "💻 Workstations" (emoji variant) when present', () => {
const fleets = [
{ id: 1, name: "Alpha" },
{ id: 3, name: "💻 Workstations" },
];
expect(preferredOrLowestIdFleet(fleets)).toEqual({
id: 3,
name: "💻 Workstations",
});
});
it("prefers plain over emoji when both exist (first match wins)", () => {
const fleets = [
{ id: 5, name: "Workstations" },
{ id: 2, name: "💻 Workstations" },
];
expect(preferredOrLowestIdFleet(fleets)).toEqual({
id: 5,
name: "Workstations",
});
});
it("matches case-insensitively", () => {
const fleets = [
{ id: 1, name: "Alpha" },
{ id: 4, name: "WORKSTATIONS" },
];
expect(preferredOrLowestIdFleet(fleets)).toEqual({
id: 4,
name: "WORKSTATIONS",
});
});
it("falls back to lowest ID when no Workstations fleet exists", () => {
const fleets = [
{ id: 10, name: "Zebra" },
{ id: 3, name: "Charlie" },
{ id: 7, name: "Mike" },
];
expect(preferredOrLowestIdFleet(fleets)).toEqual({
id: 3,
name: "Charlie",
});
});
it("returns undefined for an empty array", () => {
expect(preferredOrLowestIdFleet([])).toBeUndefined();
});
});
+17 -7
View File
@@ -186,6 +186,17 @@ const getUserTeams = ({
: filterUserTeamsByRole(currentUser.teams, permittedAccessByTeamRole);
};
// Prefer a fleet named "Workstations" (with or without emoji prefix),
// otherwise fall back to the fleet with the lowest ID.
export const preferredOrLowestIdFleet = (fleets: ITeamSummary[]) => {
const name = "workstations";
const workstations = fleets.find((t) => {
const lower = t.name.toLowerCase();
return lower === name || lower === `\u{1F4BB} ${name}`;
});
return workstations ?? sortBy(fleets, (t) => t.id)[0];
};
const getDefaultTeam = ({
currentUser,
includeAllTeams,
@@ -202,6 +213,8 @@ const getDefaultTeam = ({
if (!currentUser || !userTeams?.length) {
return undefined;
}
const realFleets = userTeams.filter((t) => t.id > APP_CONTEXT_NO_TEAM_ID);
if (permissions.isOnGlobalTeam(currentUser)) {
let defaultTeam: ITeamSummary | undefined;
if (isPrimoMode) {
@@ -221,25 +234,22 @@ const getDefaultTeam = ({
defaultTeam = userTeams.find((t) => t.id === APP_CONTEXT_ALL_TEAMS_ID);
}
if (!defaultTeam && includeNoTeam) {
// prefer the real fleet with the lowest ID over "Unassigned"
const realFleets = userTeams.filter(
(t) => t.id > APP_CONTEXT_NO_TEAM_ID
);
// prefer a real fleet over "Unassigned"
if (realFleets.length > 0) {
defaultTeam = sortBy(realFleets, (t) => t.id)[0];
defaultTeam = preferredOrLowestIdFleet(realFleets);
} else {
defaultTeam = userTeams.find((t) => t.id === APP_CONTEXT_NO_TEAM_ID);
}
}
}
return defaultTeam || userTeams.find((t) => t.id > APP_CONTEXT_NO_TEAM_ID);
return defaultTeam || preferredOrLowestIdFleet(realFleets);
}
return (
userTeams.find((t) => permissions.isTeamAdmin(currentUser, t.id)) ||
userTeams.find((t) => permissions.isTeamMaintainer(currentUser, t.id)) ||
userTeams.find((t) => t.id > APP_CONTEXT_NO_TEAM_ID)
preferredOrLowestIdFleet(realFleets)
);
};