gitscope
← marzneshin / v0.7.1 / dashboard/src/modules/admins/api/enable-admin-users.mutate.ts
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/admins/api/enable-admin-users.mutate.ts · TypeScript
Blame Raw
 1import { useMutation } from "@tanstack/react-query";
 2import { fetch, queryClient } from "@marzneshin/common/utils";
 3import { toast } from "sonner";
 4import i18n from "@marzneshin/features/i18n";
 5import { AdminType } from "../types";
 6
 7interface AdminUsersStatusEnableQuery {
 8    admin: AdminType;
 9}
10
11export async function adminUsersStatusEnable({ admin }: AdminUsersStatusEnableQuery): Promise<AdminType> {
12    return fetch(`/admins/${admin.username}/enable_users`, { method: 'post' }).then((admin) => {
13        return admin;
14    });
15}
16
17const handleError = (error: Error, value: AdminUsersStatusEnableQuery) => {
18    toast.error(
19        i18n.t('events.user_status.error', { name: value.admin.username }),
20        {
21            description: error.message
22        })
23}
24
25const handleSuccess = (value: AdminType) => {
26    toast.success(
27        i18n.t('events.user_status.success.title', { name: value.username }),
28        {
29            description: i18n.t('events.user_status.success.desc')
30        })
31    queryClient.invalidateQueries({ queryKey: [UsersStatusEnabledFetchKey] })
32    queryClient.invalidateQueries({ queryKey: [UsersStatusEnabledFetchKey, value.username] })
33}
34
35
36const UsersStatusEnabledFetchKey = "admins";
37
38export const useAdminUsersStatusEnable = () => {
39    return useMutation({
40        mutationKey: [UsersStatusEnabledFetchKey],
41        mutationFn: adminUsersStatusEnable,
42        onError: handleError,
43        onSuccess: handleSuccess,
44    })
45}