import { useTranslation } from 'react-i18next'
|
import { useSearchParams } from 'next/navigation'
|
import style from '../page.module.css'
|
import Button from '@/app/components/base/button'
|
import { apiPrefix } from '@/config'
|
import classNames from '@/utils/classnames'
|
import { getPurifyHref } from '@/utils'
|
|
type SocialAuthProps = {
|
disabled?: boolean
|
}
|
|
export default function SocialAuth(props: SocialAuthProps) {
|
const { t } = useTranslation()
|
const searchParams = useSearchParams()
|
|
const getOAuthLink = (href: string) => {
|
const url = getPurifyHref(`${apiPrefix}${href}`)
|
if (searchParams.has('invite_token'))
|
return `${url}?${searchParams.toString()}`
|
|
return url
|
}
|
return <>
|
<div className='w-full'>
|
<a href={getOAuthLink('/oauth/login/github')}>
|
<Button
|
disabled={props.disabled}
|
className='w-full'
|
>
|
<>
|
<span className={
|
classNames(
|
style.githubIcon,
|
'w-5 h-5 mr-2',
|
)
|
} />
|
<span className="truncate">{t('login.withGitHub')}</span>
|
</>
|
</Button>
|
</a>
|
</div>
|
<div className='w-full'>
|
<a href={getOAuthLink('/oauth/login/google')}>
|
<Button
|
disabled={props.disabled}
|
className='w-full'
|
>
|
<>
|
<span className={
|
classNames(
|
style.googleIcon,
|
'w-5 h-5 mr-2',
|
)
|
} />
|
<span className="truncate">{t('login.withGoogle')}</span>
|
</>
|
</Button>
|
</a>
|
</div>
|
</>
|
}
|