2
0
Files
bot/apps/builder/components/auth/SocialLoginButtons.tsx

82 lines
2.3 KiB
TypeScript
Raw Normal View History

2021-11-29 15:19:07 +01:00
import { Stack, Button } from '@chakra-ui/react'
import { GithubIcon } from 'assets/icons'
2021-11-29 15:19:07 +01:00
import { signIn, useSession } from 'next-auth/react'
import { useRouter } from 'next/router'
2021-11-29 15:19:07 +01:00
import React from 'react'
import { stringify } from 'qs'
2022-04-26 09:50:02 +02:00
import { FacebookLogo, GoogleLogo, GitlabLogo } from 'assets/logos'
2021-11-29 15:19:07 +01:00
export const SocialLoginButtons = () => {
const { query } = useRouter()
2021-11-29 15:19:07 +01:00
const { status } = useSession()
const handleGitHubClick = async () =>
signIn('github', {
callbackUrl: `/typebots?${stringify(query)}`,
})
2021-11-29 15:19:07 +01:00
const handleGoogleClick = async () =>
signIn('google', {
callbackUrl: `/typebots?${stringify(query)}`,
})
2021-11-29 15:19:07 +01:00
const handleFacebookClick = async () =>
signIn('facebook', {
callbackUrl: `/typebots?${stringify(query)}`,
})
2021-11-29 15:19:07 +01:00
2022-04-26 09:50:02 +02:00
const handleGitlabClick = async () =>
signIn('gitlab', {
callbackUrl: `/typebots?${stringify(query)}`,
})
2021-11-29 15:19:07 +01:00
return (
<Stack>
2022-04-12 14:58:55 -05:00
{process.env.NEXT_PUBLIC_GITHUB_CLIENT_ID && (
<Button
leftIcon={<GithubIcon />}
onClick={handleGitHubClick}
data-testid="github"
isLoading={['loading', 'authenticated'].includes(status)}
variant="outline"
>
Continue with GitHub
</Button>
)}
{process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID && (
<Button
leftIcon={<GoogleLogo />}
onClick={handleGoogleClick}
data-testid="google"
isLoading={['loading', 'authenticated'].includes(status)}
variant="outline"
>
Continue with Google
</Button>
)}
{process.env.NEXT_PUBLIC_FACEBOOK_CLIENT_ID && (
<Button
leftIcon={<FacebookLogo />}
onClick={handleFacebookClick}
data-testid="facebook"
isLoading={['loading', 'authenticated'].includes(status)}
variant="outline"
>
Continue with Facebook
</Button>
)}
2022-04-26 09:50:02 +02:00
{process.env.NEXT_PUBLIC_GITLAB_CLIENT_ID && (
<Button
leftIcon={<GitlabLogo />}
onClick={handleGitlabClick}
data-testid="gitlab"
isLoading={['loading', 'authenticated'].includes(status)}
variant="outline"
>
Continue with {process.env.NEXT_PUBLIC_GITLAB_NAME || 'GitLab'}
</Button>
)}
2021-11-29 15:19:07 +01:00
</Stack>
)
}