import React, { useCallback, useState } from "react"; import { useRouter } from "next/router"; import Image from "next/image"; // hooks import useUser from "hooks/use-user"; import useToast from "hooks/use-toast"; // services import authenticationService from "services/authentication.service"; // layouts import DefaultLayout from "layouts/default-layout"; // social button import { GoogleLoginButton, GithubLoginButton, EmailSignInForm, EmailPasswordForm, } from "components/account"; // ui import { Spinner } from "components/ui"; // icons import Logo from "public/logo.png"; // types import type { NextPage } from "next"; const SignInPage: NextPage = () => { // router const router = useRouter(); // user hook const { mutateUser } = useUser(); // states const [isLoading, setLoading] = useState(false); const { setToastAlert } = useToast(); const onSignInSuccess = useCallback(async () => { setLoading(true); await mutateUser(); const nextLocation = router.asPath.split("?next=")[1]; if (nextLocation) await router.push(nextLocation as string); else await router.push("/"); }, [mutateUser, router]); const handleGoogleSignIn = ({ clientId, credential }: any) => { if (clientId && credential) { setLoading(true); authenticationService .socialAuth({ medium: "google", credential, clientId, }) .then(async () => { await onSignInSuccess(); }) .catch((err) => { console.log(err); setToastAlert({ title: "Error signing in!", type: "error", message: "Something went wrong. Please try again later or contact the support team.", }); setLoading(false); }); } }; const handleGithubSignIn = useCallback( (credential: string) => { setLoading(true); authenticationService .socialAuth({ medium: "github", credential, clientId: process.env.NEXT_PUBLIC_GITHUB_ID, }) .then(async () => { await onSignInSuccess(); }) .catch((err) => { console.log(err); setToastAlert({ title: "Error signing in!", type: "error", message: "Something went wrong. Please try again later or contact the support team.", }); setLoading(false); }); }, [onSignInSuccess, setToastAlert] ); return ( {isLoading ? (

Signing in. Please wait...

) : (
Plane Web Logo

Sign In to your Plane Account

{parseInt(process.env.NEXT_PUBLIC_ENABLE_OAUTH || "0") ? ( <>
) : ( <> )}
)}
); }; export default SignInPage;