diff --git a/src/layouts/ReviewRequest/Dashboard.stories.tsx b/src/layouts/ReviewRequest/Dashboard.stories.tsx
index e90485bb9..26cf6f6c6 100644
--- a/src/layouts/ReviewRequest/Dashboard.stories.tsx
+++ b/src/layouts/ReviewRequest/Dashboard.stories.tsx
@@ -16,7 +16,7 @@ import { markReviewRequestAsViewedHandler } from "../../mocks/handlers"
import { ReviewRequestDashboard } from "./Dashboard"
const dashboardMeta = {
- title: "Components/ReviewRequest/Dashboard",
+ title: "Pages/ReviewRequest",
component: ReviewRequestDashboard,
parameters: {
msw: {
@@ -51,6 +51,19 @@ const dashboardMeta = {
const Template = ReviewRequestDashboard
-export const Playground: Story = Template.bind({})
+export const Default: Story = Template.bind({})
+export const Loading: Story = Template.bind({})
+Loading.parameters = {
+ msw: {
+ handlers: {
+ reviewRequest: buildReviewRequestData(
+ {
+ reviewRequest: MOCK_REVIEW_REQUEST,
+ },
+ "infinite"
+ ),
+ },
+ },
+}
export default dashboardMeta
diff --git a/src/layouts/ReviewRequest/Dashboard.tsx b/src/layouts/ReviewRequest/Dashboard.tsx
index 90c285fca..ba289d891 100644
--- a/src/layouts/ReviewRequest/Dashboard.tsx
+++ b/src/layouts/ReviewRequest/Dashboard.tsx
@@ -14,6 +14,7 @@ import {
PopoverArrow,
IconButton,
useDisclosure,
+ Skeleton,
} from "@chakra-ui/react"
import { Button } from "@opengovsg/design-system-react"
import { Footer } from "components/Footer"
@@ -58,7 +59,6 @@ export const ReviewRequestDashboard = (): JSX.Element => {
const { onOpen, isOpen, onClose } = useDisclosure()
// TODO!: redirect to /sites if cannot parse reviewId as string
const prNumber = parseInt(reviewId, 10)
- // TODO!: Refactor so that loading is not a concern here
const { data, isLoading: isGetReviewRequestLoading } = useGetReviewRequest(
siteName,
prNumber
@@ -69,7 +69,6 @@ export const ReviewRequestDashboard = (): JSX.Element => {
const {
mutateAsync: updateReviewRequestViewed,
} = useUpdateReviewRequestViewed()
- // TODO!: redirect to /sites if cannot parse reviewId as string
const {
mutateAsync: mergeReviewRequest,
isLoading: isMergingReviewRequest,
@@ -92,8 +91,8 @@ export const ReviewRequestDashboard = (): JSX.Element => {
}, [reviewStatus, setRedirectToPage, siteName])
useEffect(() => {
- updateReviewRequestViewed({ siteName, prNumber: parseInt(reviewId, 10) })
- }, [reviewId, siteName, updateReviewRequestViewed])
+ updateReviewRequestViewed({ siteName, prNumber })
+ }, [prNumber, siteName, updateReviewRequestViewed])
return (
<>
@@ -116,7 +115,13 @@ export const ReviewRequestDashboard = (): JSX.Element => {
>
- {data?.title || ""}
+
+ {data?.title}
+
{/* Closes after 1.5s and does not refocus on the button to avoid the outline */}
@@ -125,6 +130,7 @@ export const ReviewRequestDashboard = (): JSX.Element => {
variant="clear"
aria-label="link to pull request"
onClick={onCopy}
+ isLoading={isGetReviewRequestLoading}
/>
{
)}
- user.role === "ADMIN")
- .map(({ email }) => email) || []
+
+ >
+ user.role === "ADMIN")
+ .map(({ email }) => email) || []
+ }
+ />
+
{/* TODO: swap this to a slide out component and not a drawer */}
@@ -171,7 +187,9 @@ export const ReviewRequestDashboard = (): JSX.Element => {
-
+
+
+
{isApproved && (