Skip to content

Commit 1b0df87

Browse files
authored
Merge pull request #1366 from topcoder-platform/pm-3141_1
fix(PM-3141): Respond to appeals
2 parents 72028ad + 548b0c4 commit 1b0df87

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

src/apps/review/src/lib/hooks/useFetchSubmissionReviews.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ import {
1515
} from 'react'
1616
import { find, forEach, map } from 'lodash'
1717
import { toast } from 'react-toastify'
18-
import useSWR, { SWRResponse } from 'swr'
18+
import useSWR, { mutate, SWRResponse } from 'swr'
1919

2020
import { handleError } from '~/apps/admin/src/lib/utils'
21+
import { EnvironmentConfig } from '~/config'
2122

2223
import {
2324
AppealInfo,
@@ -458,7 +459,7 @@ export function useFetchSubmissionReviews(reviewId: string = ''): useFetchSubmis
458459
data: appeals,
459460
error: fetchAppealsError,
460461
}: SWRResponse<AppealInfo[], Error> = useSWR<AppealInfo[], Error>(
461-
`EnvironmentConfig.API.V6/appeals/resourceId/${resourceId}`,
462+
`${EnvironmentConfig.API.V6}/appeals/resourceId/${resourceId}`,
462463
{
463464
fetcher: () => fetchAppeals(1, 100, resourceId),
464465
isPaused: () => !resourceId,
@@ -857,8 +858,18 @@ export function useFetchSubmissionReviews(reviewId: string = ''): useFetchSubmis
857858

858859
setIsSavingAppealResponse(true)
859860
Promise.all(listRequest)
860-
.then(() => {
861+
.then(async () => {
861862
setIsSavingAppealResponse(false)
863+
// Revalidate SWR caches so other components using the raw SWR data update immediately
864+
try {
865+
if (reviewId) {
866+
// re-fetch review data
867+
mutate(`EnvironmentConfig.API.V6/reviews/${reviewId}`)
868+
}
869+
} catch (e) {
870+
// ignore mutate errors
871+
}
872+
862873
toast.success('Appeal response saved successfully!')
863874
success()
864875
})
@@ -867,7 +878,7 @@ export function useFetchSubmissionReviews(reviewId: string = ''): useFetchSubmis
867878
handleError(e)
868879
})
869880
},
870-
[resourceId, reviewInfo, setUpdatedReviewInfo, updatedReviewInfo],
881+
[resourceId, reviewInfo, setUpdatedReviewInfo, updatedReviewInfo, reviewId],
871882
)
872883

873884
/**

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export function getReviewRoute(
2626
? `${prefix}/${match[1]}/${match[2]}`
2727
: `/${match[1]}/${match[2]}`
2828

29-
return `${basePath}/reviews/${submissionId}?reviewId=${encodedReviewId}`
29+
return `${basePath}/reviews/${submissionId}?reviewId=${encodedReviewId}&respondToAppeals=true`
3030
}
3131
}
3232

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { mutate } from 'swr'
22
import { FC, useCallback, useEffect, useMemo, useState } from 'react'
3+
import { useSearchParams } from 'react-router-dom'
34

45
import { ChallengeLinksForAdmin } from '~/apps/review/src/lib/components/ChallengeLinksForAdmin'
56
import { ScorecardViewer } from '~/apps/review/src/lib/components/Scorecard'
@@ -25,6 +26,8 @@ import styles from './ReviewViewer.module.scss'
2526

2627
const ReviewViewer: FC = () => {
2728
const navigate = useAppNavigate()
29+
const [searchParams] = useSearchParams()
30+
const [respondToAppeals, setRespondToAppeals] = useState(searchParams.get('respondToAppeals') === 'true')
2831
const {
2932
reviewId,
3033
setReviewStatus,
@@ -205,8 +208,11 @@ const ReviewViewer: FC = () => {
205208
useEffect(() => {
206209
if (!canEditScorecard && isManagerEdit) {
207210
setIsManagerEdit(false)
211+
} else if (!isManagerEdit && respondToAppeals) {
212+
setIsManagerEdit(true)
213+
setRespondToAppeals(false)
208214
}
209-
}, [canEditScorecard, isManagerEdit])
215+
}, [canEditScorecard, isManagerEdit, respondToAppeals])
210216

211217
const toggleManagerEdit = useCallback(() => {
212218
setIsManagerEdit(prev => !prev)

0 commit comments

Comments
 (0)