Skip to content

Commit

Permalink
Merge pull request #1036 from gchq/bugfix/BAI-1117-fix-archived-secti…
Browse files Browse the repository at this point in the history
…on-review-page

Bugfix/bai 1117 fix archived section review page
  • Loading branch information
ARADDCC002 authored Feb 5, 2024
2 parents c28a727 + 502163d commit 155543e
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 25 deletions.
2 changes: 1 addition & 1 deletion frontend/pages/beta/review.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export default function Review() {
() => [
{ title: 'Release reviews', path: 'releases', view: <ReviewsList kind='release' /> },
{ title: 'Access request reviews', path: 'access', view: <ReviewsList kind='access' /> },
{ title: 'Archived', path: 'archived', view: <ReviewsList /> },
{ title: 'Archived', path: 'archived', view: <ReviewsList kind='archived' /> },
],
[],
)
Expand Down
2 changes: 2 additions & 0 deletions frontend/src/reviews/ReviewItem.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { ListItem, ListItemButton, Stack, Typography } from '@mui/material'
import { useRouter } from 'next/router'
import ReviewDisplay from 'src/model/beta/reviews/ReviewDisplay'
import ReviewRoleDisplay from 'src/reviews/ReviewRoleDisplay'
import { ReviewRequestInterface } from 'types/interfaces'
import { timeDifference } from 'utils/dateUtils'
Expand Down Expand Up @@ -41,6 +42,7 @@ export default function ReviewItem({ review }: ReviewItemProps) {
</Typography>
</Stack>
<ReviewRoleDisplay review={review} />
<ReviewDisplay review={review} />
</Stack>
</ListItemButton>
</ListItem>
Expand Down
23 changes: 9 additions & 14 deletions frontend/src/reviews/ReviewsList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,33 @@ import EmptyBlob from 'src/common/EmptyBlob'
import Loading from 'src/common/Loading'
import MessageAlert from 'src/MessageAlert'
import ReviewItem from 'src/reviews/ReviewItem'
import { Decision, ReviewRequestInterface } from 'types/interfaces'
import { ReviewRequestInterface } from 'types/interfaces'

type ReviewsListProps = {
kind?: 'release' | 'access' | 'all'
kind: 'release' | 'access' | 'archived'
}

export default function ReviewsList({ kind = 'all' }: ReviewsListProps) {
export default function ReviewsList({ kind }: ReviewsListProps) {
const { reviews, isReviewsLoading, isReviewsError } = useGetReviewRequestsForUser()
const { currentUser, isCurrentUserLoading, isCurrentUserError } = useGetCurrentUser()
const [filteredReviews, setFilteredReviews] = useState<ReviewRequestInterface[]>([])

const doesNotContainUserApproval = useCallback(
const containsUserResponse = useCallback(
(review: ReviewRequestInterface) => {
return (
currentUser &&
!review.responses.find(
(response) => response.user === `user:${currentUser.dn}` && response.decision === Decision.Approve,
)
)
return currentUser && review.responses.find((response) => response.user === `user:${currentUser.dn}`)
},
[currentUser],
)

useEffect(() => {
if (kind === 'all') {
setFilteredReviews(reviews)
if (kind === 'archived') {
setFilteredReviews(reviews.filter((filteredReview) => containsUserResponse(filteredReview)))
} else {
setFilteredReviews(
reviews.filter((filteredReview) => filteredReview.kind === kind && doesNotContainUserApproval(filteredReview)),
reviews.filter((filteredReview) => filteredReview.kind === kind && !containsUserResponse(filteredReview)),
)
}
}, [reviews, kind, doesNotContainUserApproval])
}, [reviews, kind, containsUserResponse])

if (isReviewsError) {
return <MessageAlert message={isReviewsError.info.message} severity='error' />
Expand Down
15 changes: 5 additions & 10 deletions frontend/src/wrapper/SideNavigation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { CSSProperties, useCallback, useEffect, useState } from 'react'
import Loading from 'src/common/Loading'
import MessageAlert from 'src/MessageAlert'
import { NavMenuItem } from 'src/wrapper/NavMenuItem'
import { Decision, ReviewRequestInterface } from 'types/interfaces'
import { ReviewRequestInterface } from 'types/interfaces'

import { User } from '../../types/v2/types'
import { DRAWER_WIDTH } from '../../utils/constants'
Expand Down Expand Up @@ -79,14 +79,9 @@ export default function SideNavigation({

const theme = useTheme()

const doesNotContainUserApproval = useCallback(
const doesNotContainUserResponse = useCallback(
(review: ReviewRequestInterface) => {
return (
currentUser &&
!review.responses.find(
(response) => response.user === `user:${currentUser.dn}` && response.decision === Decision.Approve,
)
)
return currentUser && !review.responses.find((response) => response.user === `user:${currentUser.dn}`)
},
[currentUser],
)
Expand All @@ -95,11 +90,11 @@ export default function SideNavigation({
async function fetchReviewCount() {
onResetErrorMessage()
if (reviews) {
setReviewCount(reviews.filter((filteredReview) => doesNotContainUserApproval(filteredReview)).length)
setReviewCount(reviews.filter((filteredReview) => doesNotContainUserResponse(filteredReview)).length)
}
}
fetchReviewCount()
}, [onResetErrorMessage, doesNotContainUserApproval, reviews])
}, [onResetErrorMessage, doesNotContainUserResponse, reviews])

if (isReviewsError) {
return <MessageAlert message={isReviewsError.info.message} severity='error' />
Expand Down

0 comments on commit 155543e

Please sign in to comment.