import {
Button,
HTMLChakraProps,
Input,
Stack,
HStack,
useToast,
Text,
} from '@chakra-ui/react'
import React, { ChangeEvent, FormEvent, useEffect } from 'react'
import { useState } from 'react'
import { signIn, useSession } from 'next-auth/react'
import { DividerWithText } from './DividerWithText'
import { SocialLoginButtons } from './SocialLoginButtons'
import { useRouter } from 'next/router'
import { NextChakraLink } from 'components/nextChakra/NextChakraLink'
const hasNoAuthProvider =
(!process.env.NEXT_PUBLIC_SMTP_FROM ||
process.env.NEXT_PUBLIC_SMTP_AUTH_DISABLED === 'true') &&
!process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID &&
!process.env.NEXT_PUBLIC_GITHUB_CLIENT_ID &&
!process.env.NEXT_PUBLIC_FACEBOOK_CLIENT_ID
type Props = {
defaultEmail?: string
}
export const SignInForm = ({
defaultEmail,
}: Props & HTMLChakraProps<'form'>) => {
const router = useRouter()
const { status } = useSession()
const [authLoading, setAuthLoading] = useState(false)
const [emailValue, setEmailValue] = useState(defaultEmail ?? '')
const toast = useToast({
position: 'top-right',
})
useEffect(() => {
if (status === 'authenticated')
router.replace({ pathname: '/typebots', query: router.query })
}, [status, router])
const handleEmailChange = (e: ChangeEvent) =>
setEmailValue(e.target.value)
const handleEmailSubmit = async (e: FormEvent) => {
e.preventDefault()
setAuthLoading(true)
await signIn('email', {
email: emailValue,
redirect: false,
})
toast({
status: 'success',
title: 'Success!',
description: 'Check your inbox to sign in',
})
setAuthLoading(false)
}
if (hasNoAuthProvider)
return (
You need to{' '}
configure at least one auth provider
{' '}
(Email, Google, GitHub or Facebook).
)
return (
{process.env.NEXT_PUBLIC_SMTP_FROM &&
process.env.NEXT_PUBLIC_SMTP_AUTH_DISABLED !== 'true' && (
<>
Or with your email
>
)}
)
}