12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- '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
|