Files
automatisch/packages/web/src/hooks/useUsers.ts
Rıdvan Akca 163aca6179 feat(user-list): add pagination (#1219)
* feat(user-list): add pagination

* feat: add actual total count in getUsers

---------

Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
2023-08-21 21:15:07 +02:00

41 lines
894 B
TypeScript

import { useQuery } from '@apollo/client';
import { IUser } from '@automatisch/types';
import { GET_USERS } from 'graphql/queries/get-users';
type Edge = {
node: IUser;
};
type QueryResponse = {
getUsers: {
pageInfo: {
currentPage: number;
totalPages: number;
};
totalCount: number;
edges: Edge[];
};
};
const getLimitAndOffset = (page: number, rowsPerPage: number) => ({
limit: rowsPerPage,
offset: page * rowsPerPage,
});
export default function useUsers(page: number, rowsPerPage: number) {
const { data, loading } = useQuery<QueryResponse>(GET_USERS, {
variables: getLimitAndOffset(page, rowsPerPage),
});
const users = data?.getUsers.edges.map(({ node }) => node) || [];
const pageInfo = data?.getUsers.pageInfo;
const totalCount = data?.getUsers.totalCount;
return {
users,
pageInfo,
totalCount,
loading,
};
}