import { ChevronLeftIcon, ChevronRightIcon } from '@chakra-ui/icons'; import { Flex, Box, Stack, Text } from '@chakra-ui/layout'; import { Button } from '@chakra-ui/button'; import { IPaginationMeta, IUser } from 'interfaces'; import React, { useContext } from 'react'; import UserItem from './UserItem'; import { useRootStore } from 'hooks/useRootStore'; import { useErrorHandler } from 'react-error-boundary'; import { UsersPageContextType } from 'types'; import { UsersPageContext } from 'contexts'; type UserListPropsType = { users: IUser[]; pagination: IPaginationMeta; }; const UserList: React.FC = ({ users, pagination }) => { const { userStore } = useRootStore(); const { searchingRole, loading, setLoading, search } = useContext(UsersPageContext); const handleError = useErrorHandler(); const pagesCount = Math.ceil(pagination.total / pagination.per_page); const nextPage = async () => { try { setLoading(true); await userStore.loadUsersData({ page: pagination.current_page + 1, limit: pagination.per_page, role: searchingRole, search, }); } catch (error: any) { handleError(error); } finally { setLoading(false); } }; const prevPage = async () => { try { setLoading(true); await userStore.loadUsersData({ page: pagination.current_page - 1, limit: pagination.per_page, role: searchingRole, search, }); } catch (error: any) { handleError(error); } finally { setLoading(false); } }; return ( <> {pagination.total !== 0 ? ( <> Total: ({pagination.total}) Actions {loading ? ( Wait a second... ) : ( {users.map(user => ( ))} )} Page {pagination.current_page} of {pagesCount} ) : ( Cannot find any users. )} ); }; export default UserList;