fix: SSR pour les providers cachés dans MetadataSearchModal

Les metadata providers sont récupérés côté serveur et les providers
sans API key sont passés en prop initialHiddenProviders, supprimant
le fetch client useEffect qui causait un layout shift.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-27 09:13:38 +01:00
parent e7295a371d
commit e078b0029f
2 changed files with 9 additions and 16 deletions

View File

@@ -41,7 +41,7 @@ export default async function SeriesDetailPage({
const seriesName = decodeURIComponent(name);
const [library, booksPage, seriesMeta, metadataLinks, readingStatusLink, prowlarrConfigured, qbConfigured] = await Promise.all([
const [library, booksPage, seriesMeta, metadataLinks, readingStatusLink, prowlarrConfigured, qbConfigured, metadataProviders] = await Promise.all([
fetchLibraries().then((libs) => libs.find((l) => l.id === id)),
fetchBooks(id, seriesName, page, limit).catch(() => ({
items: [] as BookDto[],
@@ -58,8 +58,12 @@ export default async function SeriesDetailPage({
apiFetch<{ url?: string; username?: string }>("/settings/qbittorrent")
.then(d => !!(d?.url?.trim() && d?.username?.trim()))
.catch(() => false),
apiFetch<{ comicvine?: { api_key?: string } }>("/settings/metadata_providers").catch(() => null),
]);
const hiddenProviders: string[] = [];
if (!metadataProviders?.comicvine?.api_key) hiddenProviders.push("comicvine");
const existingLink = metadataLinks.find((l) => l.status === "approved") ?? metadataLinks[0] ?? null;
let missingData: MissingBooksDto | null = null;
if (existingLink && existingLink.status === "approved") {
@@ -249,6 +253,7 @@ export default async function SeriesDetailPage({
seriesName={seriesName}
existingLink={existingLink}
initialMissing={missingData}
initialHiddenProviders={hiddenProviders}
/>
<ReadingStatusModal
libraryId={id}