gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/users/api/queries/users.query.ts · v0.6.1
Source
1 3b7feef Mrdn 2y ago import { useQuery } from "@tanstack/react-query";
2 3b7feef Mrdn 2y ago import { fetch } from "@marzneshin/utils";
3 e6e6467 Dawsh 2y ago import { UserType } from "@marzneshin/modules/users";
4 cfe497c Mrdn 2y ago import {
5 cfe497c Mrdn 2y ago FetchEntityReturn,
6 cfe497c Mrdn 2y ago UseEntityQueryProps,
7 cfe497c Mrdn 2y ago EntityQueryKeyType
8 4cebd65 Mardin 2y ago } from "@marzneshin/features/entity-table";
9 cfe497c Mrdn 2y ago
10 d377c4c Dawsh 2y ago export type SortUserBy = "username" | "used_traffic" | "data_limit" | "expire_date" | "created_at"
11 3b7feef Mrdn 2y ago
12 578311c Mrdn 2y ago export async function fetchUsers({ queryKey }: EntityQueryKeyType): FetchEntityReturn<UserType> {
13 65bbe9d Mardin 2y ago const pagination = queryKey[1];
14 65bbe9d Mardin 2y ago const primaryFilter = queryKey[2];
15 65bbe9d Mardin 2y ago const filters = queryKey[4].filters;
16 cfe497c Mrdn 2y ago return fetch(`/users`, {
17 cfe497c Mrdn 2y ago query: {
18 ca9d44e Mardin 2y ago page: pagination.page === 0 ? 1 : pagination.page,
19 ca9d44e Mardin 2y ago size: pagination.size,
20 65bbe9d Mardin 2y ago ...filters,
21 65bbe9d Mardin 2y ago username: primaryFilter,
22 65bbe9d Mardin 2y ago descending: queryKey[3].desc,
23 65bbe9d Mardin 2y ago order_by: queryKey[3].sortBy,
24 cfe497c Mrdn 2y ago }
25 cfe497c Mrdn 2y ago }).then((result) => {
26 578311c Mrdn 2y ago return {
27 7738ec1 Mardin 2y ago entities: result.items,
28 578311c Mrdn 2y ago pageCount: result.pages
29 578311c Mrdn 2y ago };
30 3b7feef Mrdn 2y ago });
31 3b7feef Mrdn 2y ago }
32 3b7feef Mrdn 2y ago
33 3b7feef Mrdn 2y ago export const UsersQueryFetchKey = "users";
34 3b7feef Mrdn 2y ago
35 cfe497c Mrdn 2y ago export const useUsersQuery = ({
36 65bbe9d Mardin 2y ago page, size, sortBy = "created_at", desc = false, filters = {}
37 65bbe9d Mardin 2y ago }: UseEntityQueryProps) => {
38 3b7feef Mrdn 2y ago return useQuery({
39 65bbe9d Mardin 2y ago queryKey: [UsersQueryFetchKey, { page, size }, filters?.username ?? "", { sortBy, desc }, { filters }],
40 3b7feef Mrdn 2y ago queryFn: fetchUsers,
41 7738ec1 Mardin 2y ago initialData: { entities: [], pageCount: 0 }
42 3b7feef Mrdn 2y ago })
43 3b7feef Mrdn 2y ago }