Files
streamrip-ui/frontend/app/history/page.tsx
T

39 lines
1.3 KiB
TypeScript

"use client";
import { useEffect, useState } from "react";
export default function HistoryPage() {
const [data, setData] = useState<{ downloads: { id: string }[]; failed: { source: string; media_type: string; id: string }[] } | null>(null);
useEffect(() => {
fetch("/api/history").then((r) => r.json()).then(setData).catch(() => {});
}, []);
async function redownload(source: string, media_type: string, id: string) {
await fetch("/api/downloads", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ source, media_type, id, no_db: true }),
});
alert("Re-Download queued — siehe Queue");
}
if (!data) return <p className="muted">Lädt …</p>;
return (
<div>
<h1>Verlauf</h1>
<h2>Downloads ({data.downloads.length})</h2>
<ul>{data.downloads.slice(-50).reverse().map((d) => <li key={d.id}>{d.id}</li>)}</ul>
<h2>Fehlgeschlagen ({data.failed.length})</h2>
<ul>
{data.failed.map((f) => (
<li key={`${f.source}-${f.media_type}-${f.id}`}>
{f.source} {f.media_type} {f.id}{" "}
<button onClick={() => redownload(f.source, f.media_type, f.id)} className="btn">Erneut laden</button>
</li>
))}
</ul>
</div>
);
}