From cede2c6bb3fe63daa32df37097591eeda3c9d9fa Mon Sep 17 00:00:00 2001 From: 4gray Date: Mon, 27 Jul 2026 10:48:16 +0200 Subject: [PATCH] fix(stalker): preserve catalog pagination metadata --- .../stalker-operation-adapter.spec.ts | 3 +++ .../stalker-operation-adapter.ts | 19 ++++++++++++++----- .../stalker-session-operations.interface.ts | 2 ++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/apps/electron-backend/src/app/services/stalker-session/stalker-operation-adapter.spec.ts b/apps/electron-backend/src/app/services/stalker-session/stalker-operation-adapter.spec.ts index d5eb9fdb3..6b316c474 100644 --- a/apps/electron-backend/src/app/services/stalker-session/stalker-operation-adapter.spec.ts +++ b/apps/electron-backend/src/app/services/stalker-session/stalker-operation-adapter.spec.ts @@ -230,6 +230,7 @@ describe('stalker-operation-adapter', () => { ], max_page_items: '10', total_items: '25', + total_pages: '3', }, }) ).toEqual({ @@ -252,7 +253,9 @@ describe('stalker-operation-adapter', () => { }, ], page: 2, + pageSize: 10, total: 25, + totalPages: 3, }); }); diff --git a/apps/electron-backend/src/app/services/stalker-session/stalker-operation-adapter.ts b/apps/electron-backend/src/app/services/stalker-session/stalker-operation-adapter.ts index 424a6dd5f..7b7ae882e 100644 --- a/apps/electron-backend/src/app/services/stalker-session/stalker-operation-adapter.ts +++ b/apps/electron-backend/src/app/services/stalker-session/stalker-operation-adapter.ts @@ -300,13 +300,22 @@ function mapCatalog( ); const total = optionalNonNegativeInteger(envelope['total_items']); const pageSize = optionalPositiveInteger(envelope['max_page_items']); + const totalPages = + optionalPositiveInteger(envelope['total_pages']) ?? + (total !== undefined && pageSize !== undefined + ? Math.ceil(total / pageSize) + : undefined); const hasMore = - total !== undefined && page !== undefined - ? pageSize !== undefined - ? page * pageSize < total - : items.length > 0 && page * items.length < total + page !== undefined + ? totalPages !== undefined + ? page < totalPages + : total !== undefined && pageSize !== undefined + ? page * pageSize < total + : total !== undefined + ? items.length > 0 && page * items.length < total + : undefined : undefined; - return compact({ hasMore, items, page, total }); + return compact({ hasMore, items, page, pageSize, total, totalPages }); } function mapCatalogItem( diff --git a/libs/shared/interfaces/src/lib/stalker-session-operations.interface.ts b/libs/shared/interfaces/src/lib/stalker-session-operations.interface.ts index 69664b338..7c35d9260 100644 --- a/libs/shared/interfaces/src/lib/stalker-session-operations.interface.ts +++ b/libs/shared/interfaces/src/lib/stalker-session-operations.interface.ts @@ -143,7 +143,9 @@ export interface StalkerSessionCatalogItem { export interface StalkerSessionCatalogResult { items: readonly StalkerSessionCatalogItem[]; page?: number; + pageSize?: number; total?: number; + totalPages?: number; hasMore?: boolean; }