import { data, Link, useLoaderData } from "react-router"; import type { LoaderFunctionArgs } from "react-router"; import { getArtistById, getArtistRevisions } from "~/lib/db.server"; export async function loader({ params }: LoaderFunctionArgs) { const artist = getArtistById(params.uuid!); if (!artist) throw data("Not found", { status: 404 }); const revisions = getArtistRevisions(artist.id); return { artist, revisions }; } export default function ArtistHistory() { const { artist, revisions } = useLoaderData(); return (

{artist.name} — 編集履歴

{revisions.length === 0 ? (

履歴がありません。

) : (
    {revisions.map((rev, i) => { let snap: { name?: string; links?: unknown[] } = {}; try { snap = JSON.parse(rev.snapshot); } catch { /* ignore */ } return (
  1. {rev.message}

    {rev.created_at} · {rev.ip_address}

    {i === 0 && ( 最新 )}

    名前: {snap.name ?? "—"}

    リンク: {snap.links?.length ?? 0}件

  2. ); })}
)}
); }