web/app/account/logout/page.tsx
Aidan 6a702c37f1
All checks were successful
Build and Push Docker Image / build_and_push (push) Successful in 44s
add logout logic, rename functions
2025-01-26 00:45:10 -05:00

78 lines
2.2 KiB
TypeScript

"use client"
import { useEffect } from "react"
import { Flex, Text, Spinner } from "@radix-ui/themes"
import { useRouter } from "next/navigation"
import Cookies from "js-cookie"
export default function Logout() {
const router = useRouter()
useEffect(() => {
const verifyKey = async () => {
try {
const response = await fetch('http://localhost:3001/auth/validateKey', {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ email: Cookies.get("email"), key: Cookies.get("key") }),
})
const data = await response.json()
if (data.error) {
router.push('/account/login')
return false;
}
} catch (error) {
console.error("There was a problem with checking the existing key:", error);
return false;
}
}
const logoutUser = async () => {
const keycheck = await verifyKey()
if (keycheck !== false) {
try {
const response = await fetch('http://localhost:3001/auth/logout', {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ email: Cookies.get("email"), key: Cookies.get("key") }),
})
const data = await response.json()
if (data.success) {
Cookies.remove("key")
Cookies.remove("email")
router.push("/account/login")
} else if (data.error) {
console.error("There was a problem with processing the logout on the backend:", data.error);
} else {
console.error("There was a problem with processing the logout on the backend:");
}
} catch (error) {
console.error("There was a problem with processing the logout on the backend:", error);
}
}
}
const timer = setTimeout(() => {
logoutUser()
}, 1250)
return () => clearTimeout(timer)
}, [router])
return (
<Flex direction="column" justify="center" align="center" className="h-screen" gap="4">
<Spinner size="3" />
<Text size="5">Logging out...</Text>
</Flex>
)
}