Skip to content

Commit baa09c1

Browse files
fix: stop displaying groups member is in for other organisations
1 parent b695847 commit baa09c1

File tree

4 files changed

+26
-8
lines changed

4 files changed

+26
-8
lines changed

site/src/api/queries/groups.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ export function groupsByUserId() {
5353
} satisfies UseQueryOptions<Group[], unknown, GroupsByUserId>;
5454
}
5555

56+
export function groupsByUserIdInOrganization(organization: string) {
57+
return {
58+
...groupsByOrganization(organization),
59+
select: selectGroupsByUserId,
60+
} satisfies UseQueryOptions<Group[], unknown, GroupsByUserId>;
61+
}
62+
5663
export function selectGroupsByUserId(groups: Group[]): GroupsByUserId {
5764
// Sorting here means that nothing has to be sorted for the individual
5865
// user arrays later

site/src/pages/ManagementSettingsPage/OrganizationMembersPage.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { groupsByUserId } from "api/queries/groups";
1+
import { groupsByUserId, groupsByUserIdInOrganization } from "api/queries/groups";
22
import {
33
addOrganizationMember,
44
organizationMembers,
@@ -23,11 +23,16 @@ const OrganizationMembersPage: FC = () => {
2323
};
2424
const { user: me } = useAuthenticated();
2525

26-
const groupsByUserIdQuery = useQuery(groupsByUserId());
26+
const groupsByUserIdQuery = useQuery(groupsByUserIdInOrganization(organizationName));
2727

2828
const membersQuery = useQuery(organizationMembers(organizationName));
2929
const organizationRolesQuery = useQuery(organizationRoles(organizationName));
3030

31+
const members = membersQuery.data?.map((member) => {
32+
const groups = groupsByUserIdQuery.data?.get(member.user_id) ?? [];
33+
return {...member, groups};
34+
})
35+
3136
const addMemberMutation = useMutation(
3237
addOrganizationMember(queryClient, organizationName),
3338
);
@@ -60,7 +65,7 @@ const OrganizationMembersPage: FC = () => {
6065
isAddingMember={addMemberMutation.isLoading}
6166
isUpdatingMemberRoles={updateMemberRolesMutation.isLoading}
6267
me={me}
63-
members={membersQuery.data}
68+
members={members}
6469
groupsByUserId={groupsByUserIdQuery.data}
6570
addMember={async (user: User) => {
6671
await addMemberMutation.mutateAsync(user.id);

site/src/pages/ManagementSettingsPage/OrganizationMembersPageView.stories.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ const meta: Meta<typeof OrganizationMembersPageView> = {
1515
isAddingMember: false,
1616
isUpdatingMemberRoles: false,
1717
me: MockUser,
18-
members: [MockOrganizationMember, MockOrganizationMember2],
18+
members: [
19+
{...MockOrganizationMember, groups: []},
20+
{...MockOrganizationMember2, groups: []},
21+
],
1922
addMember: () => Promise.resolve(),
2023
removeMember: () => Promise.resolve(),
2124
updateMemberRoles: () => Promise.resolve(),

site/src/pages/ManagementSettingsPage/OrganizationMembersPageView.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import TableRow from "@mui/material/TableRow";
1010
import { getErrorMessage } from "api/errors";
1111
import type { GroupsByUserId } from "api/queries/groups";
1212
import type {
13+
Group,
1314
OrganizationMemberWithUserData,
1415
SlimRole,
1516
User,
@@ -40,7 +41,7 @@ interface OrganizationMembersPageViewProps {
4041
isAddingMember: boolean;
4142
isUpdatingMemberRoles: boolean;
4243
me: User;
43-
members: OrganizationMemberWithUserData[] | undefined;
44+
members: Array<OrganizationMemberTableEntry> | undefined,
4445
groupsByUserId: GroupsByUserId | undefined;
4546
addMember: (user: User) => Promise<void>;
4647
removeMember: (member: OrganizationMemberWithUserData) => Promise<void>;
@@ -50,6 +51,10 @@ interface OrganizationMembersPageViewProps {
5051
) => Promise<void>;
5152
}
5253

54+
interface OrganizationMemberTableEntry extends OrganizationMemberWithUserData {
55+
groups: readonly Group[] | undefined,
56+
};
57+
5358
export const OrganizationMembersPageView: FC<
5459
OrganizationMembersPageViewProps
5560
> = (props) => {
@@ -120,9 +125,7 @@ export const OrganizationMembersPageView: FC<
120125
}
121126
}}
122127
/>
123-
<UserGroupsCell
124-
userGroups={props.groupsByUserId?.get(member.user_id)}
125-
/>
128+
<UserGroupsCell userGroups={member.groups} />
126129
<TableCell>
127130
{member.user_id !== props.me.id && props.canEditMembers && (
128131
<MoreMenu>

0 commit comments

Comments
 (0)