gitscope
← marzneshin / v0.3.0-alpha3 / dashboard/src/features/users/services/users.query.ts
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/users/services/users.query.ts · TypeScript
Blame Raw
 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}