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