From 3ca2c9eda7a7a1be9340e84cd1a7247488ffd253 Mon Sep 17 00:00:00 2001
From: cjenkscybercom <christina.jenks@knowit.se>
Date: Mon, 30 Oct 2023 14:48:16 +0100
Subject: [PATCH] CE-1966: use updated usePagination hook

---
 package-lock.json                             | 14 ++---
 package.json                                  |  2 +-
 src/components/common/User/UserIOCList.js     |  3 +-
 .../common/User/UserOperationList.js          |  3 +-
 src/components/records/RecordSearch.js        |  3 +-
 src/hooks/pagination.js                       | 58 -------------------
 src/views/IOC/IOCDetailsView.js               |  4 +-
 src/views/IOC/IOCListView.js                  |  4 +-
 src/views/host/HostDetailsView.js             |  4 +-
 src/views/host/HostListView.js                |  4 +-
 src/views/jobs/JobListView.js                 |  3 +-
 src/views/records/RecordListView.js           |  4 +-
 12 files changed, 22 insertions(+), 84 deletions(-)
 delete mode 100644 src/hooks/pagination.js

diff --git a/package-lock.json b/package-lock.json
index 4ea38f81..34c753b9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,7 @@
         "@ahooksjs/use-url-state": "^3.5.0",
         "@emotion/react": "^11.11.1",
         "@emotion/styled": "^11.11.0",
-        "@ess-ics/ce-ui-common": "^0.6.0",
+        "@ess-ics/ce-ui-common": "^1.0.0-ff816023",
         "@fontsource/roboto": "^4.1.0",
         "@mui/icons-material": "^5.14.1",
         "@mui/material": "^5.14.1",
@@ -2655,9 +2655,9 @@
       }
     },
     "node_modules/@ess-ics/ce-ui-common": {
-      "version": "0.6.0",
-      "resolved": "https://artifactory.esss.lu.se/artifactory/api/npm/ics-npm/@ess-ics/ce-ui-common/-/ce-ui-common-0.6.0.tgz",
-      "integrity": "sha1-5yOVZhamHg44YJwx05TWPQ5Pz5I=",
+      "version": "1.0.0-ff816023",
+      "resolved": "https://artifactory.esss.lu.se/artifactory/api/npm/ics-npm/@ess-ics/ce-ui-common/-/ce-ui-common-1.0.0-ff816023.tgz",
+      "integrity": "sha1-TXSd1nSSsHTgzNO5TXRs9f2emeY=",
       "dependencies": {
         "@fontsource/titillium-web": "^4.5.9",
         "@mui/x-data-grid-pro": "^6.5.0",
@@ -41722,9 +41722,9 @@
       "dev": true
     },
     "@ess-ics/ce-ui-common": {
-      "version": "0.6.0",
-      "resolved": "https://artifactory.esss.lu.se/artifactory/api/npm/ics-npm/@ess-ics/ce-ui-common/-/ce-ui-common-0.6.0.tgz",
-      "integrity": "sha1-5yOVZhamHg44YJwx05TWPQ5Pz5I=",
+      "version": "1.0.0-ff816023",
+      "resolved": "https://artifactory.esss.lu.se/artifactory/api/npm/ics-npm/@ess-ics/ce-ui-common/-/ce-ui-common-1.0.0-ff816023.tgz",
+      "integrity": "sha1-TXSd1nSSsHTgzNO5TXRs9f2emeY=",
       "requires": {
         "@fontsource/titillium-web": "^4.5.9",
         "@mui/x-data-grid-pro": "^6.5.0",
diff --git a/package.json b/package.json
index c3551deb..03eff895 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,7 @@
     "@ahooksjs/use-url-state": "^3.5.0",
     "@emotion/react": "^11.11.1",
     "@emotion/styled": "^11.11.0",
-    "@ess-ics/ce-ui-common": "^0.6.0",
+    "@ess-ics/ce-ui-common": "^1.0.0-ff816023",
     "@fontsource/roboto": "^4.1.0",
     "@mui/icons-material": "^5.14.1",
     "@mui/material": "^5.14.1",
diff --git a/src/components/common/User/UserIOCList.js b/src/components/common/User/UserIOCList.js
index 4f5aa493..c7b77d4c 100644
--- a/src/components/common/User/UserIOCList.js
+++ b/src/components/common/User/UserIOCList.js
@@ -2,10 +2,9 @@ import React, { useContext } from "react";
 import { Card, CardHeader } from "@mui/material";
 import { useEffect } from "react";
 import { initRequestParams } from "../Helper";
-import { usePagination } from "../../../hooks/pagination";
 import IOCTable from "../../IOC/IOCTable";
 import { apiContext } from "../../../api/DeployApi";
-import { useAPIMethod } from "@ess-ics/ce-ui-common";
+import { useAPIMethod, usePagination } from "@ess-ics/ce-ui-common";
 
 export function UserIocList({ userName }) {
   const client = useContext(apiContext);
diff --git a/src/components/common/User/UserOperationList.js b/src/components/common/User/UserOperationList.js
index 016621e9..202af3ee 100644
--- a/src/components/common/User/UserOperationList.js
+++ b/src/components/common/User/UserOperationList.js
@@ -2,10 +2,9 @@ import React, { useContext } from "react";
 import { Card, CardHeader } from "@mui/material";
 import { initRequestParams } from "../Helper";
 import { useEffect } from "react";
-import { usePagination } from "../../../hooks/pagination";
 import { JobTable } from "../../Job";
 import { apiContext } from "../../../api/DeployApi";
-import { useAPIMethod } from "@ess-ics/ce-ui-common";
+import { useAPIMethod, usePagination } from "@ess-ics/ce-ui-common";
 
 export function UserOperationList({ userName }) {
   const client = useContext(apiContext);
diff --git a/src/components/records/RecordSearch.js b/src/components/records/RecordSearch.js
index 4a3a859a..f7ead2ed 100644
--- a/src/components/records/RecordSearch.js
+++ b/src/components/records/RecordSearch.js
@@ -11,8 +11,7 @@ import { SearchBar } from "../common/SearchBar/SearchBar";
 import useUrlState from "@ahooksjs/use-url-state";
 import { serialize, deserialize } from "../common/URLState/URLState";
 import { Grid, Tabs, Tab } from "@mui/material";
-import { useAPIMethod } from "@ess-ics/ce-ui-common";
-import { usePagination } from "../../hooks/pagination";
+import { useAPIMethod, usePagination } from "@ess-ics/ce-ui-common";
 import { apiContext } from "../../api/DeployApi";
 
 export function RecordSearch({ iocName, rowType }) {
diff --git a/src/hooks/pagination.js b/src/hooks/pagination.js
deleted file mode 100644
index e976fec5..00000000
--- a/src/hooks/pagination.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import { useCallback, useMemo, useState } from "react";
-
-const isZeroOrPositiveInt = (val) => {
-  return Number.isInteger(val) && val >= 0;
-};
-
-/**
- * Manages pagination state e.g. outside a table or url.
- *
- * Provides getting/setting for a single pagination object, but internally
- * manages changes for each attribute independently so that e.g. if there are
- * no changes then the object is unchanged.
- */
-export const usePagination = ({
-  initPage,
-  initLimit,
-  initTotalCount,
-  rowsPerPageOptions
-}) => {
-  const [page, setPage] = useState(initPage ?? 0);
-  const [_rowsPerPageOptions] = useState(rowsPerPageOptions ?? [20, 50]);
-  const [limit, setLimit] = useState(initLimit ?? _rowsPerPageOptions[0]);
-  const [totalCount, setTotalCount] = useState(initTotalCount ?? 0);
-
-  /**
-   * Returns current set of pagination values
-   */
-  const pagination = useMemo(() => {
-    const val = {
-      page,
-      limit,
-      rows: limit,
-      totalCount,
-      totalRecords: totalCount,
-      rowsPerPageOptions: _rowsPerPageOptions
-    };
-    return val;
-  }, [page, limit, totalCount, _rowsPerPageOptions]);
-
-  /**
-   * Sets pagination. Ignores negative or nonzero values.
-   */
-  const setPagination = useCallback(
-    ({ page, limit, totalCount, rows, totalRecords }) => {
-      isZeroOrPositiveInt(page) && setPage(page);
-      isZeroOrPositiveInt(limit || rows) && setLimit(limit || rows);
-      isZeroOrPositiveInt(totalCount || totalRecords) &&
-        setTotalCount(totalCount || totalRecords);
-    },
-    []
-  );
-
-  return {
-    pagination,
-    setPagination,
-    setTotalCount
-  };
-};
diff --git a/src/views/IOC/IOCDetailsView.js b/src/views/IOC/IOCDetailsView.js
index 32839522..eaa7c67d 100644
--- a/src/views/IOC/IOCDetailsView.js
+++ b/src/views/IOC/IOCDetailsView.js
@@ -19,7 +19,8 @@ import {
   GlobalAppBarContext,
   useAPIMethod,
   useIsCurrentUserPermitted,
-  TabPanel
+  TabPanel,
+  usePagination
 } from "@ess-ics/ce-ui-common";
 import { useSafePolling } from "../../hooks/Polling";
 import useUrlState from "@ahooksjs/use-url-state";
@@ -27,7 +28,6 @@ import {
   serialize,
   deserialize
 } from "../../components/common/URLState/URLState";
-import { usePagination } from "../../hooks/pagination";
 import { apiContext } from "../../api/DeployApi";
 
 const IOC_POLL_INTERVAL = 10000;
diff --git a/src/views/IOC/IOCListView.js b/src/views/IOC/IOCListView.js
index 669aaae8..ddec0a57 100644
--- a/src/views/IOC/IOCListView.js
+++ b/src/views/IOC/IOCListView.js
@@ -3,7 +3,8 @@ import { Container, Grid, Tabs, Tab } from "@mui/material";
 import {
   GlobalAppBarContext,
   RootPaper,
-  useAPIMethod
+  useAPIMethod,
+  usePagination
 } from "@ess-ics/ce-ui-common";
 import {
   applicationTitle,
@@ -15,7 +16,6 @@ import {
   serialize,
   deserialize
 } from "../../components/common/URLState/URLState";
-import { usePagination } from "../../hooks/pagination";
 import { useMemo } from "react";
 import { apiContext } from "../../api/DeployApi";
 import IOCTable from "../../components/IOC/IOCTable";
diff --git a/src/views/host/HostDetailsView.js b/src/views/host/HostDetailsView.js
index 790fd406..81df787c 100644
--- a/src/views/host/HostDetailsView.js
+++ b/src/views/host/HostDetailsView.js
@@ -17,7 +17,8 @@ import {
   SimpleAccordion,
   GlobalAppBarContext,
   useAPIMethod,
-  AlertBannerList
+  AlertBannerList,
+  usePagination
 } from "@ess-ics/ce-ui-common";
 import { LokiPanel } from "../../components/common/Loki/LokiPanel";
 import { useNavigate, Link as ReactRouterLink } from "react-router-dom";
@@ -32,7 +33,6 @@ import {
   deserialize
 } from "../../components/common/URLState/URLState";
 import { apiContext } from "../../api/DeployApi";
-import { usePagination } from "../../hooks/pagination";
 import IOCTable from "../../components/IOC/IOCTable";
 
 export function HostDetailsView({ id, host }) {
diff --git a/src/views/host/HostListView.js b/src/views/host/HostListView.js
index 06a365e3..63afabec 100644
--- a/src/views/host/HostListView.js
+++ b/src/views/host/HostListView.js
@@ -10,7 +10,8 @@ import { HostTable } from "../../components/host/HostTable";
 import {
   GlobalAppBarContext,
   RootPaper,
-  useAPIMethod
+  useAPIMethod,
+  usePagination
 } from "@ess-ics/ce-ui-common";
 import {
   applicationTitle,
@@ -23,7 +24,6 @@ import {
   serialize,
   deserialize
 } from "../../components/common/URLState/URLState";
-import { usePagination } from "../../hooks/pagination";
 import { apiContext } from "../../api/DeployApi";
 
 export function HostListView() {
diff --git a/src/views/jobs/JobListView.js b/src/views/jobs/JobListView.js
index 0d6ade23..2a334d57 100644
--- a/src/views/jobs/JobListView.js
+++ b/src/views/jobs/JobListView.js
@@ -2,7 +2,7 @@ import React, { useContext, useState, useCallback, useMemo } from "react";
 import { Grid, Container, TextField, Autocomplete } from "@mui/material";
 import Tabs from "@mui/material/Tabs";
 import Tab from "@mui/material/Tab";
-import { RootPaper, useAPIMethod } from "@ess-ics/ce-ui-common";
+import { RootPaper, useAPIMethod, usePagination } from "@ess-ics/ce-ui-common";
 import { initRequestParams } from "../../components/common/Helper";
 import { useEffect } from "react";
 import { SearchBar } from "../../components/common/SearchBar/SearchBar";
@@ -11,7 +11,6 @@ import {
   serialize,
   deserialize
 } from "../../components/common/URLState/URLState";
-import { usePagination } from "../../hooks/pagination";
 import { JobTable } from "../../components/Job";
 import { apiContext } from "../../api/DeployApi";
 
diff --git a/src/views/records/RecordListView.js b/src/views/records/RecordListView.js
index b91b07aa..28063f15 100644
--- a/src/views/records/RecordListView.js
+++ b/src/views/records/RecordListView.js
@@ -9,7 +9,8 @@ import { Container, Grid, Tabs, Tab } from "@mui/material";
 import {
   GlobalAppBarContext,
   RootPaper,
-  useAPIMethod
+  useAPIMethod,
+  usePagination
 } from "@ess-ics/ce-ui-common";
 import {
   applicationTitle,
@@ -22,7 +23,6 @@ import {
   deserialize
 } from "../../components/common/URLState/URLState";
 import { RecordTable } from "../../components/records/RecordTable";
-import { usePagination } from "../../hooks/pagination";
 import { apiContext } from "../../api/DeployApi";
 
 export function RecordListView() {
-- 
GitLab