Spaces:
Running
Running
import { useEffect, useState } from "react"; | |
import Router, { useRouter } from "next/router"; | |
import Image from "next/image"; | |
import LinkComp from "next/link"; | |
import { setToken } from "utils/auth"; | |
// import Background from "assets/images/header/background.svg"; | |
// import Book from "assets/images/header/book.svg"; | |
// import Pizza from "assets/images/header/pizza.svg"; | |
import AvatarBot from "assets/images/avatar_bot.png"; | |
export default function DiscordCallback() { | |
const { asPath } = useRouter(); | |
const [fragment, setFragment] = useState<any>(null); | |
const [accessToken, setAccessToken] = useState<any>(null); | |
useEffect(() => { | |
setFragment(new URLSearchParams((asPath as string).split("#")[1])); | |
}, []); | |
useEffect(() => { | |
setAccessToken(fragment?.get("access_token")); | |
}, [fragment]); | |
useEffect(() => { | |
if (accessToken) { | |
setToken(accessToken); | |
// redirect to home | |
Router.push("/"); | |
} | |
}, [accessToken]); | |
return ( | |
<header className="relative z-1 h-screen"> | |
<div className="z-1 px-6 h-full"> | |
<div className="container mx-auto relative h-full flex items-center justify-center"> | |
<div className="max-w-2xl mx-auto bg-dark-500 w-full rounded-2xl grid grid-cols-1 lg:grid-cols-5 overflow-hidden shadow-xl transform transition-all duration-400"> | |
<div className="lg:col-span-3 py-9 px-8 text-center"> | |
<Image | |
width={64} | |
height={64} | |
alt="Clyde the Bot" | |
src={AvatarBot} | |
className="w-16 mx-auto" | |
/> | |
<h3 className="text-white font-bold text-2xl text-center mt-1 tracking-wide"> | |
The Guardian | |
</h3> | |
<p className="text-lg text-dark-100"> | |
{!accessToken | |
? "Hello, something went wrong. Please go back." | |
: "Login in progress..."} | |
</p> | |
{!accessToken && ( | |
<LinkComp href="/"> | |
<button className="bg-[#f02727] text-white rounded-lg w-full text-center px-3 py-3 mt-5 font-semibold hover:bg-opacity-80"> | |
Go back to website | |
</button> | |
</LinkComp> | |
)} | |
</div> | |
<div | |
style={ | |
{ | |
// backgroundImage: `url(${ModalLoginIllustration.src})`, | |
} | |
} | |
className="w-full h-full bg-cover hidden lg:block bg-center lg:col-span-2 relative bg-dark-600" | |
/> | |
</div> | |
</div> | |
</div> | |
<div className="bg-blue h-full w-full absolute top-0 left-0 -z-1"> | |
{/* <Image | |
width={124} | |
height={124} | |
alt="Decoration Background" | |
src={Book} | |
className="absolute select-none left-20 top-1/3 pointer-events-none hidden lg:block" | |
/> | |
<Image | |
width={124} | |
height={124} | |
alt="Decoration Background" | |
src={Pizza} | |
className="absolute select-none bottom-20 right-20 pointer-events-none hidden lg:block" | |
/> | |
<Image | |
width={124} | |
height={124} | |
alt="Decoration Background" | |
src={Background} | |
className="w-full absolute select-none bottom-0 left-0 pointer-events-none -z-1" | |
/> */} | |
</div> | |
</header> | |
); | |
} | |