Skip to content

Commit 6c30ebd

Browse files
authored
fix: fap review assignment usability improvements (#1482)
1 parent 7b4677a commit 6c30ebd

3 files changed

Lines changed: 33 additions & 17 deletions

File tree

apps/e2e/cypress/e2e/FAPs.cy.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1620,6 +1620,8 @@ context('Fap reviews tests', () => {
16201620
text: 'Member assigned',
16211621
});
16221622

1623+
cy.closeNotification();
1624+
16231625
cy.contains('Review Proposals').click();
16241626

16251627
cy.contains(proposal1.title)

apps/frontend/src/components/fap/Proposals/AssignFapMemberToProposalModal.tsx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ export type FapAssignedMember = BasicUserDetails & {
1717
};
1818

1919
type AssignFapMemberToProposalModalProps = {
20-
proposalPks: number[];
21-
setProposalPks: React.Dispatch<React.SetStateAction<number[]>>;
20+
proposals: { proposalPk: number; proposalId: string }[];
21+
setProposalPks: React.Dispatch<
22+
React.SetStateAction<{ proposalPk: number; proposalId: string }[]>
23+
>;
2224
fapId: number;
2325
assignMembersToFapProposals: (assignedMembers: FapAssignedMember[]) => void;
2426
assignedMembers?: Array<BasicUserDetails | null>;
@@ -44,7 +46,7 @@ const columns = [
4446
const AssignFapMemberToProposalModal = ({
4547
assignMembersToFapProposals,
4648
fapId,
47-
proposalPks,
49+
proposals,
4850
setProposalPks,
4951
}: AssignFapMemberToProposalModalProps) => {
5052
const [selectedParticipants, setSelectedParticipants] = useState<
@@ -54,10 +56,10 @@ const AssignFapMemberToProposalModal = ({
5456
const [rankSelectorOpen, setRankSelectorOpen] = useState(false);
5557

5658
useEffect(() => {
57-
if (proposalPks.length === 0) {
59+
if (proposals.length === 0) {
5860
setSelectedParticipants([]);
5961
}
60-
}, [proposalPks]);
62+
}, [proposals]);
6163

6264
const members: FapAssignedMember[] = FapMembersData
6365
? FapMembersData.map((fapMember) => ({
@@ -73,12 +75,12 @@ const AssignFapMemberToProposalModal = ({
7375
fullWidth
7476
aria-labelledby="simple-modal-title"
7577
aria-describedby="simple-modal-description"
76-
open={proposalPks.length > 0}
78+
open={proposals.length > 0}
7779
onClose={(): void => setProposalPks([])}
7880
>
7981
<DialogContent>
8082
<PeopleTable
81-
title="Select reviewers"
83+
title={`Select reviewers for proposals: ${proposals.map((pk) => pk.proposalId).join(', ')}`}
8284
selection={true}
8385
data={members}
8486
emailSearch={false}

apps/frontend/src/components/fap/Proposals/FapProposalsAndAssignmentsTable.tsx

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,9 @@ const FapProposalsAndAssignmentsTable = ({
183183
const { loadingFapProposals, FapProposalsData, setFapProposalsData } =
184184
fapProposals;
185185
const { api } = useDataApiWithFeedback();
186-
const [proposalPks, setProposalPks] = useState<number[]>([]);
186+
const [proposalPks, setProposalPks] = useState<
187+
{ proposalPk: number; proposalId: string }[]
188+
>([]);
187189
const downloadPDFProposal = useDownloadPDFProposal();
188190
const { toFormattedDateTime } = useFormattedDateTime({
189191
settingsFormatToUse: SettingsId.DATE_FORMAT,
@@ -281,9 +283,10 @@ const FapProposalsAndAssignmentsTable = ({
281283
return;
282284
}
283285

284-
const proposalPksToAssign = proposalsToAssign.map(
285-
(proposalToAssign) => proposalToAssign.proposalPk
286-
);
286+
const proposalPksToAssign = proposalsToAssign.map((proposalToAssign) => ({
287+
proposalPk: proposalToAssign.proposalPk,
288+
proposalId: proposalToAssign.proposal.proposalId,
289+
}));
287290
setProposalPks(proposalPksToAssign);
288291
};
289292

@@ -323,12 +326,12 @@ const FapProposalsAndAssignmentsTable = ({
323326
const isExistingAssignment = !!existingProposalAssignments.find(
324327
(existingProposalAssignment) =>
325328
assignedMember.id === existingProposalAssignment?.user?.id &&
326-
proposalPk === existingProposalAssignment.proposalPk
329+
proposalPk.proposalPk === existingProposalAssignment.proposalPk
327330
);
328331
if (!isExistingAssignment) {
329332
proposalAssignments.push({
330333
memberId: assignedMember.id,
331-
proposalPk,
334+
proposalPk: proposalPk.proposalPk,
332335
rank: assignedMember.rank ?? null,
333336
});
334337
updatedMembers.add(assignedMember);
@@ -370,7 +373,7 @@ const FapProposalsAndAssignmentsTable = ({
370373

371374
for (const proposalPk of proposalPks) {
372375
const { proposalReviews } = await api().getProposalReviews({
373-
proposalPk,
376+
proposalPk: proposalPk.proposalPk,
374377
fapId: data.id,
375378
});
376379

@@ -379,7 +382,10 @@ const FapProposalsAndAssignmentsTable = ({
379382
}
380383

381384
proposalReviews.forEach((proposalReview) =>
382-
allProposalReviews.push({ ...proposalReview, proposalPk })
385+
allProposalReviews.push({
386+
...proposalReview,
387+
proposalPk: proposalPk.proposalPk,
388+
})
383389
);
384390
}
385391

@@ -460,13 +466,19 @@ const FapProposalsAndAssignmentsTable = ({
460466
};
461467
}),
462468
});
469+
470+
setSearchParams((searchParams) => {
471+
searchParams.delete('selection');
472+
473+
return searchParams;
474+
});
463475
};
464476

465477
const handleMemberAssignmentToFapProposals = (
466478
memberUsers: FapAssignedMember[]
467479
) => {
468480
const selectedProposals = FapProposalsData.filter((fapProposal) =>
469-
proposalPks.includes(fapProposal.proposalPk)
481+
proposalPks.some((pk) => pk.proposalPk === fapProposal.proposalPk)
470482
);
471483

472484
if (selectedProposals.length === 0) {
@@ -767,7 +779,7 @@ const FapProposalsAndAssignmentsTable = ({
767779
/>
768780
</ProposalReviewModal>
769781
<AssignFapMemberToProposalModal
770-
proposalPks={proposalPks}
782+
proposals={proposalPks}
771783
setProposalPks={setProposalPks}
772784
fapId={data.id}
773785
assignMembersToFapProposals={handleMemberAssignmentToFapProposals}

0 commit comments

Comments
 (0)