Skip to content

Commit fd88e8c

Browse files
authored
Merge pull request #1696 from topcoder-platform/pm-2456_1
fix(PM-2456): Review setup overwriting reviewer when scorecard is changed
2 parents 8d10db5 + 8d3bd42 commit fd88e8c

File tree

1 file changed

+35
-13
lines changed
  • src/components/ChallengeEditor/ChallengeReviewer-Field

1 file changed

+35
-13
lines changed

src/components/ChallengeEditor/ChallengeReviewer-Field/index.js

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ const ResourceToPhaseNameMap = {
1515
Reviewer: 'Review',
1616
Approver: 'Approval',
1717
Screener: 'Screening',
18-
'Iterative Reviewer': 'Iterative Review'
18+
'Iterative Reviewer': 'Iterative Review',
19+
'Checkpoint Reviewer': 'Checkpoint Review',
20+
'Checkpoint Screener': 'Checkpoint Screening'
1921
}
2022

2123
class ChallengeReviewerField extends Component {
@@ -98,6 +100,10 @@ class ChallengeReviewerField extends Component {
98100
}
99101

100102
componentDidMount () {
103+
const { challenge, challengeResources } = this.props
104+
if (challenge && challenge.id && challengeResources) {
105+
this.updateAssignedMembers(challengeResources, challenge)
106+
}
101107
if (this.props.challenge.track || this.props.challenge.type) {
102108
this.loadScorecards()
103109
}
@@ -117,26 +123,25 @@ class ChallengeReviewerField extends Component {
117123
const reviewerIndex = {}
118124
reviewersWithPhaseName.forEach((reviewer, index) => {
119125
if (!reviewerIndex[reviewer.name]) {
120-
reviewerIndex[reviewer.name] = index
126+
reviewerIndex[reviewer.name] = []
121127
}
128+
reviewerIndex[reviewer.name].push(index)
122129
})
123130

124131
const assignedMembers = {}
125132

126133
challengeResources.forEach((resource) => {
127-
const index = reviewerIndex[ResourceToPhaseNameMap[resource.roleName]]
134+
const indices = reviewerIndex[ResourceToPhaseNameMap[resource.roleName]] || []
128135

129-
if (!assignedMembers[index]) {
130-
assignedMembers[index] = [{
136+
// Distribute resources across all reviewers with the same phase name
137+
indices.forEach((index) => {
138+
if (!assignedMembers[index]) {
139+
assignedMembers[index] = []
140+
}
141+
assignedMembers[index].push({
131142
handle: resource.memberHandle,
132143
userId: resource.memberId
133-
}]
134-
return
135-
}
136-
137-
assignedMembers[index].push({
138-
handle: resource.memberHandle,
139-
userId: resource.memberId
144+
})
140145
})
141146
})
142147

@@ -158,7 +163,24 @@ class ChallengeReviewerField extends Component {
158163
}
159164
}
160165

161-
if (challenge && this.doUpdateAssignedMembers) {
166+
const reviewersChanged = (() => {
167+
if (!challenge || !prevChallenge) return false
168+
const currReviewers = challenge.reviewers || []
169+
const prevReviewers = prevChallenge.reviewers || []
170+
if (currReviewers.length !== prevReviewers.length) return true
171+
for (let i = 0; i < currReviewers.length; i++) {
172+
const curr = currReviewers[i]
173+
const prev = prevReviewers[i]
174+
const { scorecardId: currScorecardId, ...currRest } = curr
175+
const { scorecardId: prevScorecardId, ...prevRest } = prev
176+
if (JSON.stringify(currRest) !== JSON.stringify(prevRest)) {
177+
return true
178+
}
179+
}
180+
return false
181+
})()
182+
183+
if (challenge && this.doUpdateAssignedMembers && reviewersChanged) {
162184
this.updateAssignedMembers(challengeResources, challenge)
163185
}
164186

0 commit comments

Comments
 (0)