Images now load direct from images.04080616.xyz. Removes read-side signing (signUrl/signCoverUrls + callers), unlocking browser and edge caching since URLs are stable. Presigned upload kept for /api/upload. PageReader retries failed loads via onError as a safety net. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
27 lines
662 B
TypeScript
27 lines
662 B
TypeScript
import { prisma } from "@/lib/db";
|
|
import { collectGenres } from "@/lib/genres";
|
|
import { GenreTabs } from "@/components/GenreTabs";
|
|
import type { Metadata } from "next";
|
|
|
|
export const dynamic = "force-dynamic";
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Genres",
|
|
};
|
|
|
|
export default async function GenrePage() {
|
|
const manga = await prisma.manga.findMany({
|
|
where: { status: "PUBLISHED" },
|
|
orderBy: { title: "asc" },
|
|
include: { _count: { select: { chapters: true } } },
|
|
});
|
|
|
|
const genres = collectGenres(manga);
|
|
|
|
return (
|
|
<div className="max-w-6xl mx-auto px-4 py-5">
|
|
<GenreTabs manga={manga} genres={genres} />
|
|
</div>
|
|
);
|
|
}
|