diff --git a/next.config.mjs b/next.config.mjs index 1a3301f..9440c1d 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,6 +1,7 @@ /** @type {import('next').NextConfig} */ const nextConfig = { images: { + dangerouslyAllowSVG: true, remotePatterns: [ { protocol: "http", diff --git a/src/app/account/repo/checks/[id]/form.js b/src/app/account/repo/checks/[id]/form.js index 050aa41..9553df9 100644 --- a/src/app/account/repo/checks/[id]/form.js +++ b/src/app/account/repo/checks/[id]/form.js @@ -10,6 +10,7 @@ import { performChecks } from "./action"; import Input from "@/components/forms/Input"; import { SubmitButton } from "@/components/forms/SubmitButton"; import classNames from "@/utils/classNames"; +import Image from "next/image"; export default function Form({ id }) { return ( @@ -20,57 +21,69 @@ export default function Form({ id }) { ); } -export function FormBadge({ src }) { +export function FormBadge({ id, baseUrl }) { + const src = `${baseUrl}/api/badges/report/${id}`; + const url = `![HealthCheck](${src})`; + const clickUrl = `[${url}](${baseUrl}/api/report/latest/${id})`; const [copy, setCopy] = useState(false); const copyHandle = async () => { - const url = `![HealthCheck](${src})`; - await navigator.clipboard.writeText(url); + await navigator.clipboard.writeText(clickUrl); setCopy(true); }; + return ( -
- -
-
-
-
-
+ HealthCheck latest status badge + ); } diff --git a/src/app/account/repo/checks/[id]/page.js b/src/app/account/repo/checks/[id]/page.js index 2408b31..133c4e9 100644 --- a/src/app/account/repo/checks/[id]/page.js +++ b/src/app/account/repo/checks/[id]/page.js @@ -39,8 +39,6 @@ export default async function Page({ params }) { }, }); - const badgeSrc = `${process.env.NEXTAUTH_URL}/api/badges/report/${id}`; - return ( <> - <FormBadge id={id} src={badgeSrc} /> - <img src={badgeSrc} className="mt-2" /> + <FormBadge id={id} baseUrl={process.env.NEXTAUTH_URL} /> </ActionPanel> <List diff --git a/src/app/api/report/latest/[id]/route.js b/src/app/api/report/latest/[id]/route.js new file mode 100644 index 0000000..0b741d5 --- /dev/null +++ b/src/app/api/report/latest/[id]/route.js @@ -0,0 +1,28 @@ +import { redirect } from "next/navigation"; + +import prisma from "@/models/db"; + +export const dynamic = "force-dynamic"; + +export async function GET(request, { params }) { + const { id } = params; + + const repository = await prisma.repository.findUnique({ + where: { id }, + include: { + checks: { + orderBy: { + createdAt: "desc", + }, + take: 1, + }, + }, + }); + + if (repository?.checks[0]) { + const check = repository.checks[0]; + redirect(`/repo/report/${check.id}`); + } else { + redirect("/repo/list"); + } +}