Skip to content

Commit f620386

Browse files
committed
Merge branch 'main' into update-xterm
2 parents 9f49358 + 4a0fd74 commit f620386

13 files changed

+456
-29
lines changed

site/e2e/tests/groups/addMembers.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ test("add members", async ({ page, baseURL }) => {
2020
Array.from({ length: numberOfMembers }, () => createUser(orgId)),
2121
);
2222

23-
await page.goto(`${baseURL}/groups/${group.id}`, {
23+
await page.goto(`${baseURL}/groups/${group.name}`, {
2424
waitUntil: "domcontentloaded",
2525
});
2626
await expect(page).toHaveTitle(`${group.display_name} - Coder`);

site/e2e/tests/groups/removeGroup.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ test("remove group", async ({ page, baseURL }) => {
1111
const orgId = await getCurrentOrgId();
1212
const group = await createGroup(orgId);
1313

14-
await page.goto(`${baseURL}/groups/${group.id}`, {
14+
await page.goto(`${baseURL}/groups/${group.name}`, {
1515
waitUntil: "domcontentloaded",
1616
});
1717
await expect(page).toHaveTitle(`${group.display_name} - Coder`);

site/e2e/tests/groups/removeMember.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ test("remove member", async ({ page, baseURL }) => {
2121
]);
2222
await API.addMember(group.id, member.id);
2323

24-
await page.goto(`${baseURL}/groups/${group.id}`, {
24+
await page.goto(`${baseURL}/groups/${group.name}`, {
2525
waitUntil: "domcontentloaded",
2626
});
2727
await expect(page).toHaveTitle(`${group.display_name} - Coder`);

site/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"deadcode": "ts-prune | grep -v \".stories\\|.config\\|e2e\\|__mocks__\\|used in module\\|testHelpers\\|typesGenerated\" || echo \"No deadcode found.\""
3131
},
3232
"dependencies": {
33-
"@emoji-mart/data": "1.1.2",
33+
"@emoji-mart/data": "1.2.1",
3434
"@emoji-mart/react": "1.1.1",
3535
"@emotion/css": "11.11.2",
3636
"@emotion/react": "11.11.1",

site/pnpm-lock.yaml

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

site/src/api/api.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1455,8 +1455,10 @@ class ApiMethods {
14551455
return response.data;
14561456
};
14571457

1458-
getGroup = async (groupId: string): Promise<TypesGen.Group> => {
1459-
const response = await this.axios.get(`/api/v2/groups/${groupId}`);
1458+
getGroup = async (groupName: string): Promise<TypesGen.Group> => {
1459+
const response = await this.axios.get(
1460+
`/api/v2/organizations/default/groups/${groupName}`,
1461+
);
14601462
return response.data;
14611463
};
14621464

site/src/api/queries/groups.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import type {
99
const GROUPS_QUERY_KEY = ["groups"];
1010
type GroupSortOrder = "asc" | "desc";
1111

12-
const getGroupQueryKey = (groupId: string) => ["group", groupId];
12+
const getGroupQueryKey = (groupName: string) => ["group", groupName];
1313

1414
export const groups = (organizationId: string) => {
1515
return {
@@ -18,10 +18,10 @@ export const groups = (organizationId: string) => {
1818
} satisfies UseQueryOptions<Group[]>;
1919
};
2020

21-
export const group = (groupId: string) => {
21+
export const group = (groupName: string) => {
2222
return {
23-
queryKey: getGroupQueryKey(groupId),
24-
queryFn: () => API.getGroup(groupId),
23+
queryKey: getGroupQueryKey(groupName),
24+
queryFn: () => API.getGroup(groupName),
2525
};
2626
};
2727

site/src/pages/GroupsPage/CreateGroupPage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export const CreateGroupPage: FC = () => {
2424
organizationId,
2525
...data,
2626
});
27-
navigate(`/groups/${newGroup.id}`);
27+
navigate(`/groups/${newGroup.name}`);
2828
}}
2929
error={createGroupMutation.error}
3030
isLoading={createGroupMutation.isLoading}

site/src/pages/GroupsPage/GroupPage.tsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
removeMember,
2424
} from "api/queries/groups";
2525
import type { Group, ReducedUser, User } from "api/typesGenerated";
26+
import { ErrorAlert } from "components/Alert/ErrorAlert";
2627
import { AvatarData } from "components/AvatarData/AvatarData";
2728
import { DeleteDialog } from "components/Dialogs/DeleteDialog/DeleteDialog";
2829
import { EmptyState } from "components/EmptyState/EmptyState";
@@ -53,16 +54,20 @@ import { isEveryoneGroup } from "utils/groups";
5354
import { pageTitle } from "utils/page";
5455

5556
export const GroupPage: FC = () => {
56-
const { groupId } = useParams() as { groupId: string };
57+
const { groupName } = useParams() as { groupName: string };
5758
const queryClient = useQueryClient();
5859
const navigate = useNavigate();
59-
const groupQuery = useQuery(group(groupId));
60+
const groupQuery = useQuery(group(groupName));
6061
const groupData = groupQuery.data;
61-
const { data: permissions } = useQuery(groupPermissions(groupId));
62+
const { data: permissions } = useQuery(
63+
groupData !== undefined
64+
? groupPermissions(groupData.id)
65+
: { enabled: false },
66+
);
6267
const addMemberMutation = useMutation(addMember(queryClient));
6368
const deleteGroupMutation = useMutation(deleteGroup(queryClient));
6469
const [isDeletingGroup, setIsDeletingGroup] = useState(false);
65-
const isLoading = !groupData || !permissions;
70+
const isLoading = groupQuery.isLoading || !groupData || !permissions;
6671
const canUpdateGroup = permissions ? permissions.canUpdateGroup : false;
6772

6873
const helmet = (
@@ -75,6 +80,10 @@ export const GroupPage: FC = () => {
7580
</Helmet>
7681
);
7782

83+
if (groupQuery.error) {
84+
return <ErrorAlert error={groupQuery.error} />;
85+
}
86+
7887
if (isLoading) {
7988
return (
8089
<>
@@ -83,6 +92,7 @@ export const GroupPage: FC = () => {
8392
</>
8493
);
8594
}
95+
const groupId = groupData.id;
8696

8797
return (
8898
<>
@@ -137,6 +147,7 @@ export const GroupPage: FC = () => {
137147
userId: user.id,
138148
});
139149
reset();
150+
await groupQuery.refetch();
140151
} catch (error) {
141152
displayError(getErrorMessage(error, "Failed to add member."));
142153
}

site/src/pages/GroupsPage/GroupsPageView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ export const GroupsPageView: FC<GroupsPageViewProps> = ({
9696

9797
<Cond>
9898
{groups?.map((group) => {
99-
const groupPageLink = `/groups/${group.id}`;
99+
const groupPageLink = `/groups/${group.name}`;
100100

101101
return (
102102
<TableRow

site/src/pages/GroupsPage/SettingsGroupPage.tsx

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,47 @@ import { useMutation, useQuery, useQueryClient } from "react-query";
44
import { useNavigate, useParams } from "react-router-dom";
55
import { getErrorMessage } from "api/errors";
66
import { group, patchGroup } from "api/queries/groups";
7+
import { ErrorAlert } from "components/Alert/ErrorAlert";
78
import { displayError } from "components/GlobalSnackbar/utils";
9+
import { Loader } from "components/Loader/Loader";
810
import { pageTitle } from "utils/page";
911
import SettingsGroupPageView from "./SettingsGroupPageView";
1012

1113
export const SettingsGroupPage: FC = () => {
12-
const { groupId } = useParams() as { groupId: string };
14+
const { groupName } = useParams() as { groupName: string };
1315
const queryClient = useQueryClient();
14-
const groupQuery = useQuery(group(groupId));
16+
const groupQuery = useQuery(group(groupName));
17+
const { data: groupData, isLoading, error } = useQuery(group(groupName));
1518
const patchGroupMutation = useMutation(patchGroup(queryClient));
1619
const navigate = useNavigate();
1720

1821
const navigateToGroup = () => {
19-
navigate(`/groups/${groupId}`);
22+
navigate(`/groups/${groupName}`);
2023
};
2124

25+
const helmet = (
26+
<Helmet>
27+
<title>{pageTitle("Settings Group")}</title>
28+
</Helmet>
29+
);
30+
31+
if (error) {
32+
return <ErrorAlert error={error} />;
33+
}
34+
35+
if (isLoading || !groupData) {
36+
return (
37+
<>
38+
{helmet}
39+
<Loader />
40+
</>
41+
);
42+
}
43+
const groupId = groupData.id;
44+
2245
return (
2346
<>
24-
<Helmet>
25-
<title>{pageTitle("Settings Group")}</title>
26-
</Helmet>
47+
{helmet}
2748

2849
<SettingsGroupPageView
2950
onCancel={navigateToGroup}
@@ -35,7 +56,7 @@ export const SettingsGroupPage: FC = () => {
3556
add_users: [],
3657
remove_users: [],
3758
});
38-
navigateToGroup();
59+
navigate(`/groups/${data.name}`, { replace: true });
3960
} catch (error) {
4061
displayError(getErrorMessage(error, "Failed to update group"));
4162
}

site/src/router.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -330,8 +330,8 @@ export const router = createBrowserRouter(
330330
</Route>
331331

332332
<Route path="create" element={<CreateGroupPage />} />
333-
<Route path=":groupId" element={<GroupPage />} />
334-
<Route path=":groupId/settings" element={<SettingsGroupPage />} />
333+
<Route path=":groupName" element={<GroupPage />} />
334+
<Route path=":groupName/settings" element={<SettingsGroupPage />} />
335335
</Route>
336336

337337
<Route path="/audit" element={<AuditPage />} />

0 commit comments

Comments
 (0)