From b93d15e9675578f75a7435a2866afa92343e84e2 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Thu, 20 May 2021 19:21:30 -0700 Subject: [PATCH] fix: PaginatedList loading loop --- app/scenes/Settings/People.js | 5 +++-- app/stores/BaseStore.js | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/scenes/Settings/People.js b/app/scenes/Settings/People.js index af2c48de5..7b670ef03 100644 --- a/app/scenes/Settings/People.js +++ b/app/scenes/Settings/People.js @@ -6,6 +6,7 @@ import * as React from "react"; import { Trans, useTranslation } from "react-i18next"; import { useHistory, useLocation } from "react-router-dom"; import scrollIntoView from "smooth-scroll-into-view-if-needed"; +import { PAGINATION_SYMBOL } from "stores/BaseStore"; import Invite from "scenes/Invite"; import { Action } from "components/Actions"; import Button from "components/Button"; @@ -56,8 +57,8 @@ function People(props) { filter, }); - setTotalPages(Math.ceil(response.pagination.total / limit)); - setUserIds(response.data.map((u) => u.id)); + setTotalPages(Math.ceil(response[PAGINATION_SYMBOL].total / limit)); + setUserIds(response.map((u) => u.id)); } finally { setIsLoading(false); } diff --git a/app/stores/BaseStore.js b/app/stores/BaseStore.js index 3811d7e34..58dc071f5 100644 --- a/app/stores/BaseStore.js +++ b/app/stores/BaseStore.js @@ -15,6 +15,8 @@ function modelNameFromClassName(string) { export const DEFAULT_PAGINATION_LIMIT = 25; +export const PAGINATION_SYMBOL = Symbol.for("pagination"); + export default class BaseStore { @observable data: Map = new Map(); @observable isFetching: boolean = false; @@ -175,7 +177,10 @@ export default class BaseStore { res.data.forEach(this.add); this.isLoaded = true; }); - return res; + + let response = res.data; + response[PAGINATION_SYMBOL] = res.pagination; + return response; } finally { this.isFetching = false; }