fix(cms): getPages paginiert alle Seiten (Slug-Fallback fand Seiten jenseits per_page=50 nicht → 404)
Deploy / verify (push) Successful in 1m4s
Deploy / deploy (push) Successful in 1m15s

This commit is contained in:
Peter Meier
2026-05-29 23:28:35 +02:00
parent 940b9beb7f
commit f05ee6b9d7
+23 -7
View File
@@ -163,14 +163,30 @@ export async function fetchOpenApi(): Promise<OpenApiSpec> {
export async function getPages(): Promise<PageEntry[]> {
return cached("page", "page:list:", async () => {
const base = getBaseUrl();
const res = await cmsFetch(`${base}/api/content/page`);
if (!res.ok) {
throw new Error(
`RustyCMS list page failed: ${res.status}. Is the CMS running at ${base}?`,
// Alle Seiten holen — CMS-Default-per_page ist 50, die Site hat aber mehr.
// Ohne vollständige Liste scheitert der Slug→_slug-Fallback in
// getPageBySlug für Seiten jenseits der ersten Page → 404.
const PER_PAGE = 200;
const all: PageEntry[] = [];
let page = 1;
let totalPages = 1;
do {
const res = await cmsFetch(
`${base}/api/content/page?_per_page=${PER_PAGE}&_page=${page}`,
);
}
const data = (await res.json()) as PageListResponse;
return data.items ?? [];
if (!res.ok) {
throw new Error(
`RustyCMS list page failed: ${res.status}. Is the CMS running at ${base}?`,
);
}
const data = (await res.json()) as PageListResponse & {
total_pages?: number;
};
all.push(...(data.items ?? []));
totalPages = data.total_pages ?? 1;
page += 1;
} while (page <= totalPages);
return all;
});
}