https://dev.kronoz.win/r/marzneshin.git
1import { useQuery } from "@tanstack/react-query";
2import { fetch } from "@marzneshin/utils";
3import { UserType } from "../types";
4import { EntityQueryKeyType, FetchEntityReturn, UseEntityQueryProps } from "@marzneshin/components";
5
6interface UserResponse extends UserType {
7 service_ids: number[]
8 services: any[]
9}
10
11export async function fetchUsers({ queryKey }: EntityQueryKeyType): FetchEntityReturn<UserType> {
12 return fetch(`/users?page=${queryKey[1]}&size=${queryKey[2]}`).then((result) => {
13 const users: UserType[] = result.items.map((fetchedUser: UserResponse) => {
14 const user: UserType = fetchedUser;
15 user.services = fetchedUser.service_ids
16 return user
17 })
18 return {
19 entity: users,
20 pageCount: result.pages
21 };
22 });
23}
24
25export const UsersQueryFetchKey = "users";
26
27export const useUsersQuery = ({ page, size }: UseEntityQueryProps) => {
28 return useQuery({
29 queryKey: [UsersQueryFetchKey, page, size],
30 queryFn: fetchUsers,
31 initialData: { entity: [], pageCount: 0 }
32 })
33}