gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/users/components/dialogs/settings/user-info/user-status-enable-button.tsx · v0.6.3
Source
1 7389ad0 Mardin 2y ago import { Button } from "@marzneshin/common/components";
2 d636f3f Dawsh 2y ago import { cn } from "@marzneshin/common/utils";
3 e6e6467 Dawsh 2y ago import { UserType, useUserStatusEnable } from "@marzneshin/modules/users";
4 c778675 Mardin 2y ago import { LoaderIcon, UserCheck, UserX } from "lucide-react";
5 cba9caa Dawsh 2y ago import { FC, useCallback, useState } from "react";
6 cba9caa Dawsh 2y ago import { useTranslation } from "react-i18next";
7 cba9caa Dawsh 2y ago
8 cba9caa Dawsh 2y ago interface UserStatusEnableButtonProps {
9 cba9caa Dawsh 2y ago user: UserType;
10 cba9caa Dawsh 2y ago }
11 cba9caa Dawsh 2y ago
12 cba9caa Dawsh 2y ago export const UserStatusEnableButton: FC<UserStatusEnableButtonProps> = ({ user }) => {
13 cba9caa Dawsh 2y ago const [userStatus, setUserStatus] = useState<boolean>(user.enabled)
14 cba9caa Dawsh 2y ago const { t } = useTranslation()
15 cba9caa Dawsh 2y ago const { mutate: userStatusEnable, isPending } = useUserStatusEnable()
16 cba9caa Dawsh 2y ago
17 cba9caa Dawsh 2y ago const handleUserStatusEnabledToggle = useCallback(() => {
18 cba9caa Dawsh 2y ago const tempUserStatus = userStatus;
19 cba9caa Dawsh 2y ago userStatusEnable({ user: user, enabled: !userStatus })
20 cba9caa Dawsh 2y ago setUserStatus(!tempUserStatus)
21 cba9caa Dawsh 2y ago }, [user, userStatus, userStatusEnable]);
22 cba9caa Dawsh 2y ago
23 c778675 Mardin 2y ago const bgColor = isPending ? 'bg-muted-foreground' : (userStatus ? 'bg-destructive' : 'bg-success')
24 cba9caa Dawsh 2y ago
25 cba9caa Dawsh 2y ago return (
26 cba9caa Dawsh 2y ago <Button
27 c778675 Mardin 2y ago className={cn(bgColor, "rounded-2xl")}
28 cba9caa Dawsh 2y ago onClick={handleUserStatusEnabledToggle}
29 cba9caa Dawsh 2y ago >
30 c778675 Mardin 2y ago {!userStatus ? <UserCheck className="mr-2" /> : <UserX className="mr-2" />}
31 cba9caa Dawsh 2y ago {isPending ? <LoaderIcon className="animate-spin" /> : t(!userStatus ? 'enable' : 'disable')}
32 cba9caa Dawsh 2y ago </Button>
33 cba9caa Dawsh 2y ago )
34 cba9caa Dawsh 2y ago }