gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/users/api/commands/user-status.command.ts · v0.6.0
Source
1 cba9caa Dawsh 2y ago import { useMutation } from "@tanstack/react-query";
2 cba9caa Dawsh 2y ago import { fetch, queryClient } from "@marzneshin/utils";
3 cba9caa Dawsh 2y ago import { toast } from "sonner";
4 cba9caa Dawsh 2y ago import i18n from "@marzneshin/features/i18n";
5 cba9caa Dawsh 2y ago import {
6 cba9caa Dawsh 2y ago UserMutationType,
7 e6e6467 Dawsh 2y ago } from "@marzneshin/modules/users";
8 cba9caa Dawsh 2y ago
9 cba9caa Dawsh 2y ago
10 cba9caa Dawsh 2y ago interface UsersStatusEnabledQuery {
11 cba9caa Dawsh 2y ago user: UserMutationType;
12 cba9caa Dawsh 2y ago enabled: boolean;
13 cba9caa Dawsh 2y ago }
14 cba9caa Dawsh 2y ago
15 cba9caa Dawsh 2y ago export async function userStatusEnabled({ user, enabled }: UsersStatusEnabledQuery): Promise<UserMutationType> {
16 d377c4c Dawsh 2y ago const action = enabled ? 'enable' : 'disable';
17 cba9caa Dawsh 2y ago return fetch(`/users/${user.username}/${action}`, { method: 'post' }).then((user) => {
18 cba9caa Dawsh 2y ago return user;
19 cba9caa Dawsh 2y ago });
20 cba9caa Dawsh 2y ago }
21 cba9caa Dawsh 2y ago
22 cba9caa Dawsh 2y ago const handleError = (error: Error, value: UsersStatusEnabledQuery) => {
23 cba9caa Dawsh 2y ago toast.error(
24 cba9caa Dawsh 2y ago i18n.t('events.user_status.error', { name: value.user.username }),
25 cba9caa Dawsh 2y ago {
26 cba9caa Dawsh 2y ago description: error.message
27 cba9caa Dawsh 2y ago })
28 cba9caa Dawsh 2y ago }
29 cba9caa Dawsh 2y ago
30 cba9caa Dawsh 2y ago const handleSuccess = (value: UserMutationType) => {
31 cba9caa Dawsh 2y ago toast.success(
32 cba9caa Dawsh 2y ago i18n.t('events.user_status.success.title', { name: value.username }),
33 cba9caa Dawsh 2y ago {
34 cba9caa Dawsh 2y ago description: i18n.t('events.user_status.success.desc')
35 cba9caa Dawsh 2y ago })
36 cba9caa Dawsh 2y ago queryClient.invalidateQueries({ queryKey: [UsersStatusEnabledFetchKey] })
37 d377c4c Dawsh 2y ago queryClient.invalidateQueries({ queryKey: [UsersStatusEnabledFetchKey, value.username] })
38 cba9caa Dawsh 2y ago }
39 cba9caa Dawsh 2y ago
40 cba9caa Dawsh 2y ago
41 cba9caa Dawsh 2y ago const UsersStatusEnabledFetchKey = "users";
42 cba9caa Dawsh 2y ago
43 cba9caa Dawsh 2y ago export const useUserStatusEnable = () => {
44 cba9caa Dawsh 2y ago return useMutation({
45 cba9caa Dawsh 2y ago mutationKey: [UsersStatusEnabledFetchKey],
46 cba9caa Dawsh 2y ago mutationFn: userStatusEnabled,
47 cba9caa Dawsh 2y ago onError: handleError,
48 cba9caa Dawsh 2y ago onSuccess: handleSuccess,
49 cba9caa Dawsh 2y ago })
50 cba9caa Dawsh 2y ago }