diff --git a/jsx/src/App.jsx b/jsx/src/App.jsx index d69c53bf..3dd99642 100644 --- a/jsx/src/App.jsx +++ b/jsx/src/App.jsx @@ -26,11 +26,10 @@ const App = () => { .updateUsers(user_page * limit, limit) .then((data) => { console.log(data); - let { _pagination, items } = data, - { offset, limit } = _pagination; + let { _pagination, items } = data; store.dispatch({ type: "USER_PAGE", - value: { data: items, page: Math.floor(offset / limit) }, + value: { data: items, page: _pagination }, }); }) .catch((err) => console.log(err)); @@ -39,11 +38,10 @@ const App = () => { .updateGroups(groups_page * limit, limit) .then((data) => { console.log(data); - let { _pagination, items } = data, - { offset, limit } = _pagination; + let { _pagination, items } = data; store.dispatch({ type: "GROUPS_PAGE", - value: { data: items, page: Math.floor(offset / limit) }, + value: { data: items, page: _pagination }, }); }) .catch((err) => console.log(err)); diff --git a/jsx/src/components/Groups/Groups.jsx b/jsx/src/components/Groups/Groups.jsx index aa1a93ff..934e27a1 100644 --- a/jsx/src/components/Groups/Groups.jsx +++ b/jsx/src/components/Groups/Groups.jsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useEffect, useState } from "react"; import { useSelector, useDispatch } from "react-redux"; import PropTypes from "prop-types"; @@ -9,20 +9,27 @@ const Groups = (props) => { var user_data = useSelector((state) => state.user_data), groups_data = useSelector((state) => state.groups_data), groups_page = useSelector((state) => state.groups_page), - limit = useSelector((state) => state.limit), - dispatch = useDispatch(), - page = parseInt(new URLSearchParams(props.location.search).get("page")); + dispatch = useDispatch(); - page = isNaN(page) ? 0 : page; - var slice = [page * limit, limit]; + var [offset, setOffset] = useState(groups_page ? groups_page.offset : 0); + var limit = groups_page ? groups_page.limit : window.api_page_limit; + var total = groups_page ? groups_page.total : undefined; var { updateGroups, history } = props; - if (!groups_data || !user_data) { + console.log(groups_data, groups_page); + + useEffect(() => { + updateGroups(offset, limit).then((data) => + dispatchPageUpdate(data.items, data._pagination) + ); + }, [offset, limit]); + + if (!groups_data || !user_data || !groups_page) { return
; } - const dispatchPageChange = (data, page) => { + const dispatchPageUpdate = (data, page) => { dispatch({ type: "GROUPS_PAGE", value: { @@ -32,12 +39,6 @@ const Groups = (props) => { }); }; - if (groups_page != page) { - updateGroups(...slice).then((data) => { - dispatchPageChange(data, page); - }); - } - return (
- Displaying {numOffset}-{numOffset + numElements}
+ Displaying {offset}-{offset + visible}
- {page >= 1 ? (
+ {offset >= limit ? (
) : (
)}
- {numElements >= limit ? (
+ {offset + visible < total ? (
) : (