'use client' import { useMemo, useState, } from 'react' import { useTranslation } from 'react-i18next' import { RiExternalLinkLine } from '@remixicon/react' import { useRouter, useSearchParams, } from 'next/navigation' import UserInfo from './user-info' import SearchInput from './search-input' import RoleSelector from './role-selector' import Confirm from './verify-state-modal' import Button from '@/app/components/base/button' import Checkbox from '@/app/components/base/checkbox' import { useEducationAdd, useInvalidateEducationStatus, } from '@/service/use-education' import { useProviderContext } from '@/context/provider-context' import { useToastContext } from '@/app/components/base/toast' import { EDUCATION_VERIFYING_LOCALSTORAGE_ITEM } from '@/app/education-apply/constants' import { getLocaleOnClient } from '@/i18n' const EducationApplyAge = () => { const { t } = useTranslation() const locale = getLocaleOnClient() const [schoolName, setSchoolName] = useState('') const [role, setRole] = useState('Student') const [ageChecked, setAgeChecked] = useState(false) const [inSchoolChecked, setInSchoolChecked] = useState(false) const { isPending, mutateAsync: educationAdd, } = useEducationAdd({ onSuccess: () => {} }) const [modalShow, setShowModal] = useState void }>(undefined) const { onPlanInfoChanged } = useProviderContext() const updateEducationStatus = useInvalidateEducationStatus() const { notify } = useToastContext() const router = useRouter() const docLink = useMemo(() => { if (locale === 'zh-Hans') return 'https://docs.dify.ai/zh-hans/getting-started/dify-for-education' if (locale === 'ja-JP') return 'https://docs.dify.ai/ja-jp/getting-started/dify-for-education' return 'https://docs.dify.ai/getting-started/dify-for-education' }, [locale]) const handleModalConfirm = () => { setShowModal(undefined) onPlanInfoChanged() updateEducationStatus() localStorage.removeItem(EDUCATION_VERIFYING_LOCALSTORAGE_ITEM) router.replace('/') } const searchParams = useSearchParams() const token = searchParams.get('token') const handleSubmit = () => { educationAdd({ token: token || '', role, institution: schoolName, }).then((res) => { if (res.message === 'success') { setShowModal({ title: t('education.successTitle'), desc: t('education.successContent'), onConfirm: handleModalConfirm, }) } else { notify({ type: 'error', message: t('education.submitError'), }) } }) } return (
dify logo
{t('education.toVerified')}
{t('education.toVerifiedTip.front')}  {t('education.toVerifiedTip.coupon')}  {t('education.toVerifiedTip.end')}
{t('education.form.schoolName.title')}
{t('education.form.schoolRole.title')}
{t('education.form.terms.title')}
{t('education.form.terms.desc.front')}  {t('education.form.terms.desc.termsOfService')}  {t('education.form.terms.desc.and')}  {t('education.form.terms.desc.privacyPolicy')} {t('education.form.terms.desc.end')}
setAgeChecked(!ageChecked)} /> {t('education.form.terms.option.age')}
setInSchoolChecked(!inSchoolChecked)} /> {t('education.form.terms.option.inSchool')}
{t('education.learn')}
{})} onCancel={modalShow?.onConfirm || (() => {})} />
) } export default EducationApplyAge