summaryrefslogtreecommitdiff
path: root/src/components/settings/LogoutButton.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/settings/LogoutButton.tsx')
-rw-r--r--src/components/settings/LogoutButton.tsx31
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>
+ );
+}