mirror of
https://github.com/langgenius/dify.git
synced 2024-11-16 11:42:29 +08:00
68 lines
2.2 KiB
TypeScript
68 lines
2.2 KiB
TypeScript
'use client'
|
||
import { useTranslation } from 'react-i18next'
|
||
import useSWR from 'swr'
|
||
import { useRouter, useSearchParams } from 'next/navigation'
|
||
import cn from '@/utils/classnames'
|
||
import Button from '@/app/components/base/button'
|
||
|
||
import { invitationCheck } from '@/service/common'
|
||
import Loading from '@/app/components/base/loading'
|
||
|
||
const ActivateForm = () => {
|
||
const router = useRouter()
|
||
const { t } = useTranslation()
|
||
const searchParams = useSearchParams()
|
||
const workspaceID = searchParams.get('workspace_id')
|
||
const email = searchParams.get('email')
|
||
const token = searchParams.get('token')
|
||
|
||
const checkParams = {
|
||
url: '/activate/check',
|
||
params: {
|
||
...workspaceID && { workspace_id: workspaceID },
|
||
...email && { email },
|
||
token,
|
||
},
|
||
}
|
||
const { data: checkRes } = useSWR(checkParams, invitationCheck, {
|
||
revalidateOnFocus: false,
|
||
onSuccess(data) {
|
||
if (data.is_valid) {
|
||
const params = new URLSearchParams(searchParams)
|
||
const { email, workspace_id } = data.data
|
||
params.set('email', encodeURIComponent(email))
|
||
params.set('workspace_id', encodeURIComponent(workspace_id))
|
||
params.set('invite_token', encodeURIComponent(token as string))
|
||
router.replace(`/signin?${params.toString()}`)
|
||
}
|
||
},
|
||
})
|
||
|
||
return (
|
||
<div className={
|
||
cn(
|
||
'flex flex-col items-center w-full grow justify-center',
|
||
'px-6',
|
||
'md:px-[108px]',
|
||
)
|
||
}>
|
||
{!checkRes && <Loading />}
|
||
{checkRes && !checkRes.is_valid && (
|
||
<div className="flex flex-col md:w-[400px]">
|
||
<div className="w-full mx-auto">
|
||
<div className="mb-3 flex justify-center items-center w-20 h-20 p-5 rounded-[20px] border border-gray-100 shadow-lg text-[40px] font-bold">🤷♂️</div>
|
||
<h2 className="text-[32px] font-bold text-gray-900">{t('login.invalid')}</h2>
|
||
</div>
|
||
<div className="w-full mx-auto mt-6">
|
||
<Button variant='primary' className='w-full !text-sm'>
|
||
<a href="https://dify.ai">{t('login.explore')}</a>
|
||
</Button>
|
||
</div>
|
||
</div>
|
||
)}
|
||
</div>
|
||
)
|
||
}
|
||
|
||
export default ActivateForm
|