From e9acbdeadceebbc8e64bed47007fd2b49af7736c Mon Sep 17 00:00:00 2001 From: Birk Johansson Date: Thu, 21 Mar 2024 03:27:06 +0100 Subject: [PATCH] fix(icons): fix list pagination --- .../custom-models/icon/IconModelDefinition.js | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/config/custom-models/icon/IconModelDefinition.js b/src/config/custom-models/icon/IconModelDefinition.js index 7a395424b..8b75a4946 100644 --- a/src/config/custom-models/icon/IconModelDefinition.js +++ b/src/config/custom-models/icon/IconModelDefinition.js @@ -28,36 +28,45 @@ export default class IconModelDefinition extends ModelDefinition { return this.api.get(`icons/${id}`).then(icon => this.iconToModel(icon)); } - list() { + list(listParams = {}) { // Read the query string manually from the filters instance because we don't want to transform // it to query parameters for API calls. We will do client side filtering instead. const nameFilter = this.filters.filters.find( ({ propertyName }) => propertyName === 'identifiable' ); - const queryString = nameFilter && nameFilter.filterValue; - + const search = nameFilter && nameFilter.filterValue; const params = { fields: 'key,description,custom,created,lastUpdated,createdBy[id,displayName,name],fileResource,href', type: 'custom', - search: queryString || '', + ...(search && { search }), + ...(listParams.page && { page: listParams.page }), }; - const res = this.api + return this.api .get('icons', params) .then(response => ({ ...response, icons: response.icons.map(icon => this.iconToModel(icon)), })) .then(response => { + // icons API doesnt have nextPage and prevPage... + // we only need these to be defined for it to work + const pager = { + ...response.pager, + nextPage: + response.pager.page < response.pager.pageCount || + undefined, + prevPage: response.pager.page === 1 && undefined, + }; const collection = IconModelCollection.create( this, response.icons, - response.pager + pager ); + console.log({ collection }); return collection; }); - return res; } async save(model) {