From bed467520daee6f5a85b835acad431761183fcd9 Mon Sep 17 00:00:00 2001 From: David Leek Date: Thu, 3 Jul 2025 09:25:58 +0200 Subject: [PATCH] chore: limit requested approver count to 10 (#10279) --- .../ChangeRequestRequestedApprovers.tsx | 8 ++++++++ .../DraftChangeRequestActions.tsx | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestRequestedApprovers/ChangeRequestRequestedApprovers.tsx b/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestRequestedApprovers/ChangeRequestRequestedApprovers.tsx index e11899a8b2..b67a14a52c 100644 --- a/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestRequestedApprovers/ChangeRequestRequestedApprovers.tsx +++ b/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestRequestedApprovers/ChangeRequestRequestedApprovers.tsx @@ -158,6 +158,7 @@ export const ChangeRequestAddRequestedApprovers: FC<{ }> = ({ changeRequest, saveClicked, existingReviewers }) => { const theme = useTheme(); const [reviewers, setReviewers] = useState([]); + const allReviewers = [...existingReviewers, ...reviewers]; const { reviewers: fetchedReviewers, loading: isLoading } = useAvailableChangeRequestReviewers( changeRequest.project, @@ -207,6 +208,13 @@ export const ChangeRequestAddRequestedApprovers: FC<{ options={availableReviewers} renderOption={renderOption} filterOptions={filterOptions} + freeSolo={allReviewers.length >= 10 ? false : undefined} + getOptionDisabled={(options) => { + return ( + allReviewers.length >= 10 && + !reviewers.find((opt) => opt.id === options.id) + ); + }} isOptionEqualToValue={(option, value) => option.id === value.id} getOptionLabel={(option: AvailableReviewerSchema) => option.email || option.name || option.username || '' diff --git a/frontend/src/component/changeRequest/ChangeRequestSidebar/DraftChangeRequestActions/DraftChangeRequestActions.tsx b/frontend/src/component/changeRequest/ChangeRequestSidebar/DraftChangeRequestActions/DraftChangeRequestActions.tsx index 155c535058..c1e458b04c 100644 --- a/frontend/src/component/changeRequest/ChangeRequestSidebar/DraftChangeRequestActions/DraftChangeRequestActions.tsx +++ b/frontend/src/component/changeRequest/ChangeRequestSidebar/DraftChangeRequestActions/DraftChangeRequestActions.tsx @@ -147,6 +147,13 @@ export const DraftChangeRequestActions: FC<{ options={availableReviewers} renderOption={renderOption} filterOptions={filterOptions} + freeSolo={reviewers.length >= 10 ? false : undefined} + getOptionDisabled={(options) => { + return ( + reviewers.length >= 10 && + !reviewers.find((opt) => opt.id === options.id) + ); + }} isOptionEqualToValue={(option, value) => option.id === value.id} getOptionLabel={(option: AvailableReviewerSchema) => option.email || option.name || option.username || ''