import { createFileRoute, Link } from "@tanstack/react-router";
import { getDiscussion } from "~/fns/discussions";
import { useViewer } from "~/hooks/use-viewer";
import { DiscussionThreads, UpvoteButton } from "~/components/DiscussionThreads";
import { ReactionBar } from "~/components/ReactionBar";
import { Avatar } from "~/ui/Avatar";
import { Badge } from "~/ui/Badge";
import { Markdown } from "~/ui/Markdown";
import { RelativeTime } from "~/ui/RelativeTime";
import { Heading } from "~/ui/Heading";
export const Route = createFileRoute("/$owner/$repo/discussions/$number")({
loader: ({ params }) =>
getDiscussion({ data: { owner: params.owner, repo: params.repo, number: Number(params.number) } }),
head: ({ loaderData }) => ({
meta: [{ title: loaderData ? `${loaderData.discussion.title} · Discussion` : "Discussion" }],
}),
component: DiscussionPage,
});
function DiscussionPage() {
const data = Route.useLoaderData();
const params = Route.useParams();
const viewer = useViewer();
const { discussion } = data;
const context = { owner: params.owner, repo: params.repo, number: discussion.number, signedIn: Boolean(viewer) };
return (
<div className="max-w-4xl space-y-6">
<header className="space-y-2 border-b border-gray-800 pb-4">
<Heading size="xl">
{discussion.title} <span className="font-normal text-gray-500">#{discussion.number}</span>
</Heading>
<div className="flex flex-wrap items-center gap-2 text-sm text-gray-500">
<Link
to="/$owner/$repo/discussions"
params={{ owner: params.owner, repo: params.repo }}
search={{ category: discussion.category }}
>
<Badge>