Skip to content

Commit 08fc6cf

Browse files
committed
fix: remove the phase name which is already added
1 parent 473d443 commit 08fc6cf

File tree

1 file changed

+51
-38
lines changed
  • src/components/ChallengeEditor/ChallengeReviewer-Field

1 file changed

+51
-38
lines changed

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

Lines changed: 51 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -722,44 +722,57 @@ class ChallengeReviewerField extends Component {
722722
onChange={(e) => this.updateReviewer(index, 'phaseId', e.target.value)}
723723
>
724724
<option value=''>Select Phase</option>
725-
{challenge.phases && challenge.phases
726-
.filter(phase => {
727-
const rawName = phase.name ? phase.name : ''
728-
const phaseName = rawName.toLowerCase()
729-
const norm = phaseName.replace(/[-\s]/g, '')
730-
const isReviewPhase = phaseName.includes('review')
731-
const isSubmissionPhase = phaseName.includes('submission')
732-
const isScreeningPhase = norm === 'screening' || norm === 'checkpointscreening'
733-
const isApprovalPhase = norm === 'approval'
734-
const isPostMortemPhase = norm === 'postmortem'
735-
const isCurrentlySelected = reviewer.phaseId && ((phase.id === reviewer.phaseId) || (phase.phaseId === reviewer.phaseId)) && !isSubmissionPhase
736-
737-
// For AI reviewers, allow review, submission, and other required phases
738-
// For member reviewers, allow review and other required phases
739-
if (this.isAIReviewer(reviewer)) {
740-
return (
741-
isReviewPhase ||
742-
isSubmissionPhase ||
743-
isScreeningPhase ||
744-
isApprovalPhase ||
745-
isPostMortemPhase ||
746-
isCurrentlySelected
747-
)
748-
} else {
749-
return (
750-
isReviewPhase ||
751-
isScreeningPhase ||
752-
isApprovalPhase ||
753-
isPostMortemPhase ||
754-
isCurrentlySelected
755-
)
756-
}
757-
})
758-
.map(phase => (
759-
<option key={phase.id || phase.phaseId} value={phase.phaseId || phase.id}>
760-
{phase.name || `Phase ${phase.phaseId || phase.id}`}
761-
</option>
762-
))}
725+
{challenge.phases && challenge.phases
726+
.filter(phase => {
727+
const rawName = phase.name ? phase.name : ''
728+
const phaseName = rawName.toLowerCase()
729+
const norm = phaseName.replace(/[-\s]/g, '')
730+
const isReviewPhase = phaseName.includes('review')
731+
const isSubmissionPhase = phaseName.includes('submission')
732+
const isScreeningPhase = norm === 'screening' || norm === 'checkpointscreening'
733+
const isApprovalPhase = norm === 'approval'
734+
const isPostMortemPhase = norm === 'postmortem'
735+
const isCurrentlySelected = reviewer.phaseId && ((phase.id === reviewer.phaseId) || (phase.phaseId === reviewer.phaseId)) && !isSubmissionPhase
736+
737+
// Collect phases already assigned to other reviewers (excluding current reviewer)
738+
const assignedPhaseIds = new Set(
739+
(challenge.reviewers || [])
740+
.filter((r, i) => i !== index)
741+
.map(r => r.phaseId)
742+
.filter(id => id !== undefined && id !== null)
743+
)
744+
745+
// Exclude phases already assigned to other reviewers, except the currently selected phase
746+
if (assignedPhaseIds.has(phase.phaseId || phase.id) && !isCurrentlySelected) {
747+
return false
748+
}
749+
750+
// For AI reviewers, allow review, submission, and other required phases
751+
// For member reviewers, allow review and other required phases
752+
if (this.isAIReviewer(reviewer)) {
753+
return (
754+
isReviewPhase ||
755+
isSubmissionPhase ||
756+
isScreeningPhase ||
757+
isApprovalPhase ||
758+
isPostMortemPhase ||
759+
isCurrentlySelected
760+
)
761+
} else {
762+
return (
763+
isReviewPhase ||
764+
isScreeningPhase ||
765+
isApprovalPhase ||
766+
isPostMortemPhase ||
767+
isCurrentlySelected
768+
)
769+
}
770+
})
771+
.map(phase => (
772+
<option key={phase.id || phase.phaseId} value={phase.phaseId || phase.id}>
773+
{phase.name || `Phase ${phase.phaseId || phase.id}`}
774+
</option>
775+
))}
763776
</select>
764777
)}
765778
{!readOnly && challenge.submitTriggered && validationErrors.phaseId && (

0 commit comments

Comments
 (0)