@@ -585,7 +585,10 @@ export const ScorecardQuestionView: FC<Props> = (props: Props) => {
585585 const scorecardQuestion = props . scorecardQuestion
586586 const sectionIndex = props . sectionIndex
587587 const setIsExpand = props . setIsExpand
588- const { actionChallengeRole } : useRoleProps = useRole ( )
588+ const {
589+ actionChallengeRole,
590+ myChallengeResources,
591+ } : useRoleProps = useRole ( )
589592 const { loginUserInfo } : ReviewAppContextModel = useContext ( ReviewAppContext )
590593 const { width : screenWidth } : WindowSize = useWindowSize ( )
591594 const isMobile = useMemo ( ( ) => screenWidth <= 745 , [ screenWidth ] )
@@ -670,18 +673,32 @@ export const ScorecardQuestionView: FC<Props> = (props: Props) => {
670673 selectedScore ,
671674 ] )
672675
676+ const reviewerResourceId = reviewInfo ?. resourceId
677+
678+ // Owning the specific reviewer resource proves the current member is assigned this review
679+ const hasReviewerResource = useMemo (
680+ ( ) => Boolean (
681+ reviewerResourceId
682+ && myChallengeResources . some (
683+ resource => resource . id === reviewerResourceId ,
684+ ) ,
685+ ) ,
686+ [ myChallengeResources , reviewerResourceId ] ,
687+ )
688+
673689 const canRespondToAppeal = useMemo ( ( ) => {
674- if ( ! loginUserInfo ?. handle || ! reviewerHandle ) {
690+ if ( ! hasReviewerResource ) {
675691 return false
676692 }
677693
678- if ( actionChallengeRole !== REVIEWER ) {
679- return false
694+ const currentHandle = loginUserInfo ?. handle
695+ if ( ! currentHandle || ! reviewerHandle ) {
696+ return true
680697 }
681698
682- return loginUserInfo . handle . toLowerCase ( )
699+ return currentHandle . toLowerCase ( )
683700 === reviewerHandle . toLowerCase ( )
684- } , [ actionChallengeRole , loginUserInfo ?. handle , reviewerHandle ] )
701+ } , [ hasReviewerResource , loginUserInfo ?. handle , reviewerHandle ] )
685702
686703 const finalAnswer = useMemo (
687704 ( ) => getFormattedAnswer ( reviewItem ) ,
0 commit comments