| 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 |
cba9caa |
Dawsh |
2y ago |
} from "@marzneshin/features/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 |
} |