Skip to content

Commit eb3d66e

Browse files
committed
refactoring issue details page
1 parent f2f95c3 commit eb3d66e

File tree

3 files changed

+44
-18
lines changed

3 files changed

+44
-18
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { Button } from "@radix-ui/themes";
2+
import Link from "next/link";
3+
import { Pencil2Icon } from "@radix-ui/react-icons";
4+
5+
const EditIssueButton = ({ issueId }: { issueId: number }) => {
6+
return (
7+
<Button>
8+
<Pencil2Icon />
9+
<Link href={`/issues/${issueId}/edit`}>Edit Issue</Link>
10+
</Button>
11+
);
12+
};
13+
14+
export default EditIssueButton;

app/issues/[id]/IssueDetails.tsx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { IssueStatusBadge } from "@/app/components";
2+
import { Issue } from "@prisma/client";
3+
import { Heading, Flex, Card, Text } from "@radix-ui/themes";
4+
import React from "react";
5+
import ReactMarkdown from "react-markdown";
6+
7+
const IssueDetails = ({ issue }: { issue: Issue }) => {
8+
return (
9+
<>
10+
<Heading>{issue.title}</Heading>
11+
<Flex gap="3" my="2">
12+
<IssueStatusBadge status={issue.status} />
13+
<Text>{issue.createdAt.toDateString()}</Text>
14+
</Flex>
15+
<Card className="mt-4">
16+
<ReactMarkdown>{issue.description}</ReactMarkdown>
17+
</Card>
18+
</>
19+
);
20+
};
21+
22+
export default IssueDetails;

app/issues/[id]/page.tsx

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import { IssueStatusBadge } from "../../components";
21
import prisma from "@/prisma/client";
3-
import { Box, Button, Card, Flex, Grid, Heading, Text } from "@radix-ui/themes";
2+
import { Box, Grid } from "@radix-ui/themes";
43
import { notFound } from "next/navigation";
5-
import ReactMarkdown from "react-markdown";
6-
import { Pencil2Icon } from "@radix-ui/react-icons";
7-
import Link from "next/link";
4+
import EditIssueButton from "./EditIssueButton";
5+
import IssueDetails from "./IssueDetails";
86

97
interface Props {
108
params: {
@@ -13,30 +11,22 @@ interface Props {
1311
}
1412

1513
const IssueDetailPage = async ({ params }: Props) => {
14+
const { id } = await params;
15+
1616
const issue = await prisma.issue.findUnique({
1717
where: {
18-
id: parseInt(params.id),
18+
id: parseInt(id),
1919
},
2020
});
2121
if (!issue) notFound();
2222

2323
return (
2424
<Grid columns={{ initial: "1", sm: "2" }} gap="4">
2525
<Box>
26-
<Heading>{issue.title}</Heading>
27-
<Flex gap="3" my="2">
28-
<IssueStatusBadge status={issue.status} />
29-
<Text>{issue.createdAt.toDateString()}</Text>
30-
</Flex>
31-
<Card className="mt-4">
32-
<ReactMarkdown>{issue.description}</ReactMarkdown>
33-
</Card>
26+
<IssueDetails issue={issue} />
3427
</Box>
3528
<Box>
36-
<Button>
37-
<Pencil2Icon />
38-
<Link href={`/issues/${issue.id}/edit`}>Edit Issue</Link>
39-
</Button>
29+
<EditIssueButton issueId={issue.id} />
4030
</Box>
4131
</Grid>
4232
);

0 commit comments

Comments
 (0)