@@ -946,7 +946,10 @@ export function useFetchScreeningReview(): useFetchScreeningReviewProps {
946946
947947 // Subsets by submission type for tab-specific displays
948948 const contestSubmissions = useMemo (
949- ( ) => visibleChallengeSubmissions . filter ( s => ( s . type || '' ) . toUpperCase ( ) === 'CONTEST_SUBMISSION' ) ,
949+ ( ) => visibleChallengeSubmissions . filter ( s => {
950+ const submissionType = s . type ?. trim ( )
951+ return submissionType ?. toUpperCase ( ) === 'CONTEST_SUBMISSION'
952+ } ) ,
950953 [ visibleChallengeSubmissions ] ,
951954 )
952955 const finalFixSubmissions = useMemo (
@@ -958,21 +961,48 @@ export function useFetchScreeningReview(): useFetchScreeningReviewProps {
958961 const reviewerIds = useMemo ( ( ) => {
959962 let results : string [ ] = [ ]
960963
964+ const normalizeRoleName = ( roleName ?: string | null ) : string | undefined => roleName
965+ ?. trim ( )
966+ . toLowerCase ( )
967+
961968 if ( challengeReviewers && challengeReviewers . length ) {
969+ const reviewerRoleResources = filter (
970+ challengeReviewers ,
971+ reviewer => normalizeRoleName ( reviewer . roleName ) === 'reviewer' ,
972+ )
973+
962974 results = (
963975 actionChallengeRole === REVIEWER
964976 ? filter (
965- challengeReviewers ,
977+ reviewerRoleResources ,
966978 reviewer => reviewer . memberId === `${ loginUserInfo ?. userId } ` ,
967979 )
968- : challengeReviewers
980+ : reviewerRoleResources
969981 ) . map ( reviewer => reviewer . id )
970982 }
971983
972984 if ( ! results . length ) {
985+ const reviewerResourceIds = new Set (
986+ ( resources ?? [ ] )
987+ . filter ( resource => normalizeRoleName ( resource . roleName ) === 'reviewer' )
988+ . map ( resource => resource . id )
989+ . filter ( ( id ) : id is string => Boolean ( id ) ) ,
990+ )
991+
973992 forEach ( visibleChallengeSubmissions , challengeSubmission => {
974993 forEach ( challengeSubmission . review , review => {
975- results . push ( review . resourceId )
994+ const resourceId = review . resourceId
995+ if ( ! resourceId ) {
996+ return
997+ }
998+
999+ if ( reviewerResourceIds . size && ! reviewerResourceIds . has ( resourceId ) ) {
1000+ return
1001+ }
1002+
1003+ if ( ! results . includes ( resourceId ) ) {
1004+ results . push ( resourceId )
1005+ }
9761006 } )
9771007 } )
9781008 }
@@ -984,6 +1014,7 @@ export function useFetchScreeningReview(): useFetchScreeningReviewProps {
9841014 visibleChallengeSubmissions ,
9851015 actionChallengeRole ,
9861016 loginUserInfo ,
1017+ resources ,
9871018 ] )
9881019
9891020 // fetch appeal response
@@ -1841,6 +1872,11 @@ export function useFetchScreeningReview(): useFetchScreeningReviewProps {
18411872 submissionsByLegacyId : visibleSubmissionsByLegacyId ,
18421873 } )
18431874
1875+ const submissionType = matchingSubmission ?. type ?. trim ( )
1876+ if ( submissionType ?. toUpperCase ( ) !== 'CONTEST_SUBMISSION' ) {
1877+ return undefined
1878+ }
1879+
18441880 const submissionWithReview : BackendSubmission | undefined = matchingSubmission
18451881 ? {
18461882 ...matchingSubmission ,
0 commit comments