Skip to content

Commit 01aabc5

Browse files
feat: add groups column to members page in organizations
1 parent 25f1ddb commit 01aabc5

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

site/src/pages/ManagementSettingsPage/OrganizationMembersPage.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { groupsByUserId } from "api/queries/groups";
12
import {
23
addOrganizationMember,
34
organizationMembers,
@@ -22,6 +23,8 @@ const OrganizationMembersPage: FC = () => {
2223
};
2324
const { user: me } = useAuthenticated();
2425

26+
const groupsByUserIdQuery = useQuery(groupsByUserId());
27+
2528
const membersQuery = useQuery(organizationMembers(organizationName));
2629
const organizationRolesQuery = useQuery(organizationRoles(organizationName));
2730

@@ -58,6 +61,7 @@ const OrganizationMembersPage: FC = () => {
5861
isUpdatingMemberRoles={updateMemberRolesMutation.isLoading}
5962
me={me}
6063
members={membersQuery.data}
64+
groupsByUserId={groupsByUserIdQuery.data}
6165
addMember={async (user: User) => {
6266
await addMemberMutation.mutateAsync(user.id);
6367
void membersQuery.refetch();

site/src/pages/ManagementSettingsPage/OrganizationMembersPageView.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import TableContainer from "@mui/material/TableContainer";
88
import TableHead from "@mui/material/TableHead";
99
import TableRow from "@mui/material/TableRow";
1010
import { getErrorMessage } from "api/errors";
11+
import type { GroupsByUserId } from "api/queries/groups";
1112
import type {
1213
OrganizationMemberWithUserData,
1314
SlimRole,
@@ -30,6 +31,7 @@ import { UserAvatar } from "components/UserAvatar/UserAvatar";
3031
import { type FC, useState } from "react";
3132
import { TableColumnHelpTooltip } from "./UserTable/TableColumnHelpTooltip";
3233
import { UserRoleCell } from "./UserTable/UserRoleCell";
34+
import { UserGroupsCell } from "pages/UsersPage/UsersTable/UserGroupsCell";
3335

3436
interface OrganizationMembersPageViewProps {
3537
allAvailableRoles: readonly SlimRole[] | undefined;
@@ -39,6 +41,7 @@ interface OrganizationMembersPageViewProps {
3941
isUpdatingMemberRoles: boolean;
4042
me: User;
4143
members: OrganizationMemberWithUserData[] | undefined;
44+
groupsByUserId: GroupsByUserId | undefined,
4245
addMember: (user: User) => Promise<void>;
4346
removeMember: (member: OrganizationMemberWithUserData) => Promise<void>;
4447
updateMemberRoles: (
@@ -68,13 +71,19 @@ export const OrganizationMembersPageView: FC<
6871
<Table>
6972
<TableHead>
7073
<TableRow>
71-
<TableCell width="50%">User</TableCell>
72-
<TableCell width="49%">
74+
<TableCell width="33%">User</TableCell>
75+
<TableCell width="33%">
7376
<Stack direction="row" spacing={1} alignItems="center">
7477
<span>Roles</span>
7578
<TableColumnHelpTooltip variant="roles" />
7679
</Stack>
7780
</TableCell>
81+
<TableCell width="33%">
82+
<Stack direction="row" spacing={1} alignItems="center">
83+
<span>Groups</span>
84+
<TableColumnHelpTooltip variant="groups" />
85+
</Stack>
86+
</TableCell>
7887
<TableCell width="1%"></TableCell>
7988
</TableRow>
8089
</TableHead>
@@ -111,6 +120,7 @@ export const OrganizationMembersPageView: FC<
111120
}
112121
}}
113122
/>
123+
<UserGroupsCell userGroups={props.groupsByUserId?.get(member.user_id)} />
114124
<TableCell>
115125
{member.user_id !== props.me.id && props.canEditMembers && (
116126
<MoreMenu>

0 commit comments

Comments
 (0)