diff options
Diffstat (limited to 'src/components/settings/LogoutButton.tsx')
| -rw-r--r-- | src/components/settings/LogoutButton.tsx | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/components/settings/LogoutButton.tsx b/src/components/settings/LogoutButton.tsx new file mode 100644 index 0000000..22cbb27 --- /dev/null +++ b/src/components/settings/LogoutButton.tsx @@ -0,0 +1,31 @@ +'use client'; + +import { Button } from '@/components/ui/button'; +import { useAuthContext } from '@/lib/contexts/Auth.context'; +import { useRouter } from 'next/navigation'; +import { useState } from 'react'; + +export default function LogoutButton() { + const { logout } = useAuthContext(); + const router = useRouter(); + const [loading, setLoading] = useState(false); + + const handleLogout = async () => { + if (loading) return; + + setLoading(true); + + try { + await logout(); + router.push('/'); + } finally { + setLoading(false); + } + }; + + return ( + <Button className="w-[310px]" onClick={handleLogout} disabled={loading}> + {loading ? 'Выход...' : 'Выйти из аккаунта'} + </Button> + ); +} |
