Skip to content

Commit 95887b1

Browse files
authored
Merge pull request #1381 from topcoder-platform/dev
[HOTFIX] - Fix broken review UI flow
2 parents 9a94084 + 22737bd commit 95887b1

File tree

13 files changed

+46
-26
lines changed

13 files changed

+46
-26
lines changed

.circleci/config.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,6 @@ workflows:
226226
branches:
227227
only:
228228
- dev
229-
- pm-3141_3
230229

231230
- deployQa:
232231
context: org-global

src/apps/review/src/lib/components/FieldMarkdownEditor/FieldMarkdownEditor.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ const toggleStrategy = {
135135
},
136136
italic: (start: any, end: any) => {
137137
const startType = start.replace(/(\*|_)(?![\s\S]*(\*|_))/, '')
138-
const endType = end.replace(/(\*|_)/, '')
138+
const endType = end.replace(/(\*|_)/g, '')
139139
return { endType, startType }
140140
},
141141
strikethrough: (start: any, end: any) => {

src/apps/review/src/lib/components/Scorecard/ScorecardViewer/ScorecardQuestion/ReviewResponse/ReviewManagerComment/ReviewManagerComment.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ interface ReviewManagerCommentProps {
3131
const ReviewManagerComment: FC<ReviewManagerCommentProps> = props => {
3232
const {
3333
isManagerEdit,
34+
canAddManagerComment,
3435
isSavingManagerComment,
3536
addManagerComment,
3637
}: ScorecardViewerContextValue = useScorecardViewerContext()
@@ -131,7 +132,7 @@ const ReviewManagerComment: FC<ReviewManagerCommentProps> = props => {
131132
</div>
132133
)}
133134

134-
{!showCommentForm && !comment && isManagerEdit && (
135+
{!showCommentForm && !comment && isManagerEdit && canAddManagerComment && (
135136
<button
136137
type='button'
137138
onClick={handleShowCommentForm}

src/apps/review/src/lib/components/Scorecard/ScorecardViewer/ScorecardViewer.context.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export interface ScorecardViewerContextProps {
2222
children: ReactNode;
2323
scorecard: Scorecard | ScorecardInfo
2424
aiFeedbackItems?: AiFeedbackItem[]
25+
canAddManagerComment?: boolean
2526
reviewInfo?: ReviewInfo
2627
isEdit?: boolean
2728
isManagerEdit?: boolean
@@ -66,6 +67,7 @@ export interface ScorecardViewerContextProps {
6667

6768
export type ScorecardViewerContextValue = {
6869
aiFeedbackItems?: AiFeedbackItem[]
70+
canAddManagerComment?: boolean
6971
toggledItems: {[key: string]: boolean}
7072
toggleItem: (id: string, toggle?: boolean) => void
7173
reviewInfo?: ReviewInfo
@@ -142,6 +144,7 @@ export const ScorecardViewerContextProvider: FC<ScorecardViewerContextProps> = p
142144
addAppealResponse: props.addAppealResponse,
143145
addManagerComment: props.addManagerComment,
144146
aiFeedbackItems: props.aiFeedbackItems,
147+
canAddManagerComment: props.canAddManagerComment,
145148
doDeleteAppeal: props.doDeleteAppeal,
146149
form: props.isEdit ? reviewFormCtx.form : undefined,
147150
formErrors: props.isEdit ? reviewFormCtx.form.formState.errors : undefined,
@@ -161,6 +164,7 @@ export const ScorecardViewerContextProvider: FC<ScorecardViewerContextProps> = p
161164
touchedAllFields: reviewFormCtx.touchedAllFields,
162165
}), [
163166
props.aiFeedbackItems,
167+
props.canAddManagerComment,
164168
props.reviewInfo,
165169
props.isEdit,
166170
props.isManagerEdit,

src/apps/review/src/lib/components/Scorecard/ScorecardViewer/ScorecardViewer.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ interface ScorecardViewerProps {
4444
isSavingAppeal?: boolean
4545
isSavingAppealResponse?: boolean
4646
isSavingManagerComment?: boolean
47+
canAddManagerComment?: boolean
4748
setReviewStatus?: (status: ReviewCtxStatus) => void
4849
setActionButtons?: (buttons?: ReactNode) => void
4950
saveReviewInfo?: (
@@ -335,6 +336,7 @@ const ScorecardViewer: FC<ScorecardViewerProps> = props => (
335336
<ScorecardViewerContextProvider
336337
scorecard={props.scorecard}
337338
aiFeedbackItems={props.aiFeedback}
339+
canAddManagerComment={props.canAddManagerComment}
338340
reviewInfo={props.reviewInfo}
339341
isEdit={props.isEdit}
340342
isManagerEdit={props.isManagerEdit}

src/apps/review/src/lib/components/TableAppeals/TableAppeals.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ export const TableAppeals: FC<TableAppealsProps> = (props: TableAppealsProps) =>
256256
? ownedMemberIds.has(submissionOwnerId)
257257
: false
258258
},
259+
canRespondToAppeals: isAdmin || hasReviewerRole,
259260
canViewScorecard: canAccessScorecards,
260261
isAppealsTab: true,
261262
}

src/apps/review/src/lib/components/TableAppealsResponse/TableAppealsResponse.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,10 +319,11 @@ export const TableAppealsResponse: FC<TableAppealsResponseProps> = (props: Table
319319
const scoreVisibilityConfig = useMemo<ScoreVisibilityConfig>(
320320
() => ({
321321
canDisplayScores: () => true,
322+
canRespondToAppeals,
322323
canViewScorecard: true,
323324
isAppealsTab: false,
324325
}),
325-
[],
326+
[canRespondToAppeals],
326327
)
327328

328329
const columns = useMemo<TableColumn<SubmissionRow>[]>(() => {
@@ -467,7 +468,7 @@ export const TableAppealsResponse: FC<TableAppealsResponseProps> = (props: Table
467468
>
468469
<Link
469470
className={styles.respondButton}
470-
to={getReviewRoute(submission.id, reviewId)}
471+
to={getReviewRoute(submission.id, reviewId, canRespondToAppeals)}
471472
>
472473
Respond to Appeals
473474
</Link>

src/apps/review/src/lib/components/TableReview/TableReview.tsx

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -266,21 +266,11 @@ export const TableReview: FC<TableReviewProps> = (props: TableReviewProps) => {
266266
const minimumPassingScoreByScorecardId = useScorecardPassingScores(scorecardIds)
267267

268268
const aggregatedRows = useMemo<SubmissionRow[]>(() => {
269-
const rows = aggregatedSubmissionRows
270-
.filter(aggregated => {
271-
const reviews = aggregated.reviews ?? []
272-
const myReviewDetail = reviews.find(review => {
273-
const resourceId = review.reviewInfo?.resourceId ?? review.resourceId
274-
return resourceId ? myReviewerResourceIds.has(resourceId) : false
275-
})
276-
277-
return !!myReviewDetail?.reviewId
278-
})
279-
.map(aggregated => ({
280-
...(aggregated.submission ?? {}),
281-
...aggregated.submission,
282-
aggregated,
283-
})) as SubmissionRow[]
269+
const rows = aggregatedSubmissionRows.map(aggregated => ({
270+
...(aggregated.submission ?? {}),
271+
...aggregated.submission,
272+
aggregated,
273+
})) as SubmissionRow[]
284274

285275
if (!restrictToLatest) {
286276
return rows

src/apps/review/src/lib/components/common/TableColumnRenderers.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,7 @@ export function renderScoreCell(
522522
canViewScorecard,
523523
viewOwnScorecardTooltip = VIEW_OWN_SCORECARD_TOOLTIP,
524524
getReviewUrl,
525+
canRespondToAppeals,
525526
}: ScoreVisibilityConfig = configWithDefaults
526527

527528
const reviewDetail = submission.aggregated?.reviews?.[reviewIndex]
@@ -585,7 +586,9 @@ export function renderScoreCell(
585586
)
586587
}
587588

588-
const reviewUrl = getReviewUrl ? getReviewUrl(reviewId) : getReviewRoute(submission.id, reviewId)
589+
const reviewUrl = getReviewUrl
590+
? getReviewUrl(reviewId)
591+
: getReviewRoute(submission.id, reviewId, canRespondToAppeals)
589592

590593
return (
591594
<div className={styles.scoreReopenBlock}>
@@ -615,6 +618,7 @@ export function renderAppealsCell(
615618
canViewScorecard,
616619
viewOwnScorecardTooltip = VIEW_OWN_SCORECARD_TOOLTIP,
617620
getReviewUrl,
621+
canRespondToAppeals,
618622
}: ScoreVisibilityConfig = configWithDefaults
619623

620624
const reviewDetail = submission.aggregated?.reviews?.[reviewIndex]
@@ -668,7 +672,9 @@ export function renderAppealsCell(
668672
)
669673
}
670674

671-
const reviewUrl = getReviewUrl ? getReviewUrl(reviewId) : getReviewRoute(submission.id, reviewId)
675+
const reviewUrl = getReviewUrl
676+
? getReviewUrl(reviewId)
677+
: getReviewRoute(submission.id, reviewId, canRespondToAppeals)
672678

673679
return (
674680
<Link

src/apps/review/src/lib/components/common/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ export interface ScoreVisibilityConfig {
7575
isAppealsTab?: boolean
7676
/** Optional function to build review detail URLs by ID. */
7777
getReviewUrl?: (reviewId: string) => string
78+
/** Indicates whether the viewer can appeal to respond. */
79+
canRespondToAppeals?: boolean
7880
}
7981

8082
export type { AggregatedReviewDetail, AggregatedSubmissionReviews }

0 commit comments

Comments
 (0)