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