fix(modeles): paginer apres filtre categorie

This commit is contained in:
2026-01-15 12:51:30 +01:00
parent 84048bf3a2
commit 52f75c5301

View File

@@ -96,11 +96,21 @@ export async function listModelTypes(params: ModelTypeListParams = {}, opts: { s
if (params.dir) {
query.dir = params.dir;
}
if (typeof params.limit === 'number') {
query.itemsPerPage = params.limit;
}
if (typeof params.offset === 'number') {
query.offset = params.offset;
const hasCategoryFilter = Boolean(params.category);
const effectiveLimit = typeof params.limit === 'number' ? params.limit : undefined;
const effectiveOffset = typeof params.offset === 'number' ? params.offset : 0;
if (hasCategoryFilter) {
// Fetch enough items to allow client-side category filtering + pagination.
query.itemsPerPage = Math.max(effectiveLimit ?? 200, 200);
query.offset = 0;
} else {
if (typeof params.limit === 'number') {
query.itemsPerPage = params.limit;
}
if (typeof params.offset === 'number') {
query.offset = params.offset;
}
}
const payload = await requestFetch<Record<string, any>>(ENDPOINT, createOptions({
@@ -116,22 +126,25 @@ export async function listModelTypes(params: ModelTypeListParams = {}, opts: { s
: Array.isArray(payload?.items)
? payload.items
: [];
const items = params.category
const filteredItems = params.category
? rawItems.filter((item: any) => item?.category === params.category)
: rawItems;
const total = params.category
? items.length
? filteredItems.length
: typeof payload?.totalItems === 'number'
? payload.totalItems
: Array.isArray(payload?.items)
? payload.items.length
: rawItems.length;
const items = params.category && typeof effectiveLimit === 'number'
? filteredItems.slice(effectiveOffset, effectiveOffset + effectiveLimit)
: filteredItems;
return {
items,
total,
offset: params.offset ?? 0,
limit: typeof params.limit === 'number' ? params.limit : items.length,
offset: effectiveOffset,
limit: typeof effectiveLimit === 'number' ? effectiveLimit : items.length,
} satisfies ModelTypeListResponse;
}