← marzneshin
/
dashboard/src/features/users/components/dialogs/settings/user-info/user-status-enable-button.tsx
/
blame
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/users/components/dialogs/settings/user-info/user-status-enable-button.tsx
· v0.3.1
Source
| 1 | cba9caa | Dawsh | 2y ago | import { Button } from "@marzneshin/components"; |
| 2 | fb9bc33 | Mardin | 2y ago | import { cn } from "@marzneshin/utils"; |
| 3 | cba9caa | Dawsh | 2y ago | import { UserType, useUserStatusEnable } from "@marzneshin/features/users"; |
| 4 | cba9caa | Dawsh | 2y ago | import { LoaderIcon } 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 | cba9caa | Dawsh | 2y ago | const bgColor = isPending ? 'bg-muted-foreground' : (userStatus ? 'bg-red-400' : 'bg-green-400') |
| 24 | cba9caa | Dawsh | 2y ago | |
| 25 | cba9caa | Dawsh | 2y ago | return ( |
| 26 | cba9caa | Dawsh | 2y ago | <Button |
| 27 | fb9bc33 | Mardin | 2y ago | className={cn(bgColor, "w-1/2")} |
| 28 | cba9caa | Dawsh | 2y ago | onClick={handleUserStatusEnabledToggle} |
| 29 | cba9caa | Dawsh | 2y ago | > |
| 30 | cba9caa | Dawsh | 2y ago | {isPending ? <LoaderIcon className="animate-spin" /> : t(!userStatus ? 'enable' : 'disable')} |
| 31 | cba9caa | Dawsh | 2y ago | </Button> |
| 32 | cba9caa | Dawsh | 2y ago | ) |
| 33 | cba9caa | Dawsh | 2y ago | } |