| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |  | 'use client' | 
					
						
							|  |  |  |  | import { useTranslation } from 'react-i18next' | 
					
						
							|  |  |  |  | import useSWR from 'swr' | 
					
						
							| 
									
										
										
										
											2024-10-21 09:23:20 +08:00
										 |  |  |  | import { useRouter, useSearchParams } from 'next/navigation' | 
					
						
							| 
									
										
										
										
											2024-07-09 15:05:40 +08:00
										 |  |  |  | import cn from '@/utils/classnames' | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |  | import Button from '@/app/components/base/button' | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-21 09:23:20 +08:00
										 |  |  |  | import { invitationCheck } from '@/service/common' | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |  | import Loading from '@/app/components/base/loading' | 
					
						
							| 
									
										
										
										
											2025-05-20 12:07:50 +08:00
										 |  |  |  | import useDocumentTitle from '@/hooks/use-document-title' | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | const ActivateForm = () => { | 
					
						
							| 
									
										
										
										
											2025-05-20 12:07:50 +08:00
										 |  |  |  |   useDocumentTitle('') | 
					
						
							| 
									
										
										
										
											2024-10-21 09:23:20 +08:00
										 |  |  |  |   const router = useRouter() | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |  |   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: { | 
					
						
							| 
									
										
										
										
											2023-09-07 17:15:57 +08:00
										 |  |  |  |       ...workspaceID && { workspace_id: workspaceID }, | 
					
						
							|  |  |  |  |       ...email && { email }, | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |  |       token, | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |   } | 
					
						
							| 
									
										
										
										
											2024-10-21 09:23:20 +08:00
										 |  |  |  |   const { data: checkRes } = useSWR(checkParams, invitationCheck, { | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |  |     revalidateOnFocus: false, | 
					
						
							| 
									
										
										
										
											2024-10-21 09:23:20 +08:00
										 |  |  |  |     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()}`) | 
					
						
							|  |  |  |  |       } | 
					
						
							|  |  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |  |   }) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   return ( | 
					
						
							|  |  |  |  |     <div className={ | 
					
						
							|  |  |  |  |       cn( | 
					
						
							| 
									
										
										
										
											2025-03-21 17:41:03 +08:00
										 |  |  |  |         'flex w-full grow flex-col items-center justify-center', | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |  |         'px-6', | 
					
						
							|  |  |  |  |         'md:px-[108px]', | 
					
						
							|  |  |  |  |       ) | 
					
						
							|  |  |  |  |     }> | 
					
						
							| 
									
										
										
										
											2024-02-02 15:42:42 +08:00
										 |  |  |  |       {!checkRes && <Loading />} | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |  |       {checkRes && !checkRes.is_valid && ( | 
					
						
							|  |  |  |  |         <div className="flex flex-col md:w-[400px]"> | 
					
						
							| 
									
										
										
										
											2025-03-21 17:41:03 +08:00
										 |  |  |  |           <div className="mx-auto w-full"> | 
					
						
							| 
									
										
										
										
											2025-03-31 10:28:19 +08:00
										 |  |  |  |             <div className="mb-3 flex h-20 w-20 items-center justify-center rounded-[20px] border border-divider-regular bg-components-option-card-option-bg p-5 text-[40px] font-bold shadow-lg">🤷♂️</div> | 
					
						
							|  |  |  |  |             <h2 className="text-[32px] font-bold text-text-primary">{t('login.invalid')}</h2> | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |  |           </div> | 
					
						
							| 
									
										
										
										
											2025-03-21 17:41:03 +08:00
										 |  |  |  |           <div className="mx-auto mt-6 w-full"> | 
					
						
							| 
									
										
										
										
											2024-06-21 14:17:45 +08:00
										 |  |  |  |             <Button variant='primary' className='w-full !text-sm'> | 
					
						
							| 
									
										
										
										
											2023-07-14 11:19:26 +08:00
										 |  |  |  |               <a href="https://dify.ai">{t('login.explore')}</a> | 
					
						
							|  |  |  |  |             </Button> | 
					
						
							|  |  |  |  |           </div> | 
					
						
							|  |  |  |  |         </div> | 
					
						
							|  |  |  |  |       )} | 
					
						
							|  |  |  |  |     </div> | 
					
						
							|  |  |  |  |   ) | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | export default ActivateForm |