Skip to content

Commit

Permalink
Merge pull request #4420 from webkom/meeting-invite-bug
Browse files Browse the repository at this point in the history
Catch inviting groups you can't access members of
  • Loading branch information
norbye committed Feb 2, 2024
2 parents 190cadf + bdae82d commit 93699de
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 20 deletions.
23 changes: 16 additions & 7 deletions app/actions/GroupActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ export function joinGroup(groupId: ID, user: CurrentUser, role = 'member') {
},
})
).then(() => {
return dispatch(fetchMemberships(groupId));
return dispatch(fetchMemberships({ groupId }));
});
}

Expand All @@ -143,7 +143,7 @@ export function leaveGroup(membership: MembershipType, groupId: ID) {
},
})
).then(() => {
return dispatch(fetchMemberships(groupId));
return dispatch(fetchMemberships({ groupId }));
});
};
}
Expand All @@ -163,16 +163,23 @@ export function fetchAllMemberships(groupId: ID, descendants = false) {
};
}

export function fetchMemberships(
groupId: ID,
export function fetchMemberships({
groupId,
descendants = false,
query: Record<string, any> = {}
) {
query = {},
propagateError = true,
}: {
groupId: ID;
descendants?: boolean;
query?: Record<string, any>;
propagateError?: boolean;
}) {
return fetchMembershipsPagination({
groupId,
descendants,
next: true,
query,
propagateError,
});
}

Expand All @@ -181,11 +188,13 @@ export function fetchMembershipsPagination({
next,
descendants = false,
query = {},
propagateError = true,
}: {
groupId: ID;
next: boolean;
descendants: boolean;
query?: Record<string, string | number | boolean>;
propagateError?: boolean;
}) {
return callAPI<MembershipType[]>({
types: Group.MEMBERSHIP_FETCH,
Expand All @@ -199,7 +208,7 @@ export function fetchMembershipsPagination({
groupId: groupId,
errorMessage: 'Henting av medlemmene for gruppen feilet',
},
propagateError: true,
propagateError,
});
}

Expand Down
35 changes: 22 additions & 13 deletions app/routes/meetings/components/MeetingEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -132,19 +132,28 @@ const MeetingEditor = () => {
);

const fetchAndSetGroupMembers = async (groupId: number) => {
dispatch(fetchMemberships(groupId)).then((res) => {
setFetchedGroupIds((prevIds) => [...prevIds, groupId]);

const members = Object.values(res.payload.entities.users || {}).map(
(member) => ({
value: member.username,
label: member.fullName,
id: member.id,
groupId: groupId,
})
);
setInvitedGroupMembers((prevMembers) => [...prevMembers, ...members]);
});
dispatch(fetchMemberships({ groupId, propagateError: false }))
.then((res) => {
setFetchedGroupIds((prevIds) => [...prevIds, groupId]);

const members = Object.values(res.payload.entities.users || {}).map(
(member) => ({
value: member.username,
label: member.fullName,
id: member.id,
groupId: groupId,
})
);
setInvitedGroupMembers((prevMembers) => [...prevMembers, ...members]);
})
.catch((error) => {
// Allow users to invite groups they can't see the members of
if (error?.payload?.response?.status === 403) {
setFetchedGroupIds((prevIds) => [...prevIds, groupId]);
return;
}
throw error;
});
};

const navigate = useNavigate();
Expand Down

0 comments on commit 93699de

Please sign in to comment.