Skip to content

Commit 4b24324

Browse files
committed
fix: add manager comment button showing to submitters and normal reviewer
1 parent f1ffcf0 commit 4b24324

File tree

9 files changed

+33
-6
lines changed

9 files changed

+33
-6
lines changed

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/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 }

src/apps/review/src/lib/utils/routes.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ const CHALLENGE_DETAILS_SEGMENT = /(active-challenges|past-challenges)\/([^/]+)\
66
export function getReviewRoute(
77
submissionId: string,
88
reviewId: string,
9+
addRespondToAppeals?: boolean,
910
currentPathname?: string,
1011
): string {
12+
console.log('getReviewRoute called with:', addRespondToAppeals)
1113
const encodedReviewId = encodeURIComponent(reviewId)
1214
const pathname = currentPathname
1315
?? (typeof window !== 'undefined' ? window.location.pathname : '')
@@ -26,7 +28,9 @@ export function getReviewRoute(
2628
? `${prefix}/${match[1]}/${match[2]}`
2729
: `/${match[1]}/${match[2]}`
2830

29-
return `${basePath}/reviews/${submissionId}?reviewId=${encodedReviewId}&respondToAppeals=true`
31+
const respondToAppeals = addRespondToAppeals ? '&respondToAppeals=true' : ''
32+
33+
return `${basePath}/reviews/${submissionId}?reviewId=${encodedReviewId}${respondToAppeals}`
3034
}
3135
}
3236

src/apps/review/src/pages/reviews/components/ReviewViewer/ReviewViewer.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,12 @@ const ReviewViewer: FC = () => {
272272
isSavingAppeal={isSavingAppeal}
273273
isSavingAppealResponse={isSavingAppealResponse}
274274
isSavingManagerComment={isSavingManagerComment}
275+
canAddManagerComment={
276+
hasChallengeAdminRole
277+
|| hasTopcoderAdminRole
278+
|| hasChallengeManagerRole
279+
|| hasChallengeCopilotRole
280+
}
275281
saveReviewInfo={saveReviewInfo}
276282
addAppeal={addAppeal}
277283
addAppealResponse={addAppealResponse}

0 commit comments

Comments
 (0)