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