'use client' import React from 'react' import Button from '@/app/components/base/button' import Modal from '@/app/components/base/modal' import { useDocLink } from '@/context/i18n' import Link from 'next/link' import { useTranslation } from 'react-i18next' import { RiExternalLinkLine } from '@remixicon/react' import { SparklesSoftAccent } from '../components/base/icons/src/public/common' import useTimestamp from '@/hooks/use-timestamp' import { useModalContextSelector } from '@/context/modal-context' import { useEducationVerify } from '@/service/use-education' import { useRouter } from 'next/navigation' export type ExpireNoticeModalPayloadProps = { expireAt: number expired: boolean } export type Props = { onClose: () => void } & ExpireNoticeModalPayloadProps const i18nPrefix = 'education.notice' const ExpireNoticeModal: React.FC = ({ expireAt, expired, onClose }) => { const { t } = useTranslation() const docLink = useDocLink() const eduDocLink = docLink('/getting-started/dify-for-education') const { formatTime } = useTimestamp() const setShowPricingModal = useModalContextSelector(s => s.setShowPricingModal) const { mutateAsync } = useEducationVerify() const router = useRouter() const handleVerify = async () => { const { token } = await mutateAsync() if (token) router.push(`/education-apply?token=${token}`) } const handleConfirm = async () => { await handleVerify() onClose() } return (
{expired ? (<>
{t(`${i18nPrefix}.expired.summary.line1`)}
{t(`${i18nPrefix}.expired.summary.line2`)}
) : t(`${i18nPrefix}.isAboutToExpire.summary`)}
{t(`${i18nPrefix}.stillInEducation.title`)} {t(`${i18nPrefix}.stillInEducation.${expired ? 'expired' : 'isAboutToExpire'}`)}
{t(`${i18nPrefix}.alreadyGraduated.title`)} {t(`${i18nPrefix}.alreadyGraduated.${expired ? 'expired' : 'isAboutToExpire'}`)}
{t('education.learn')}
{expired ? ( ) : ( )}
) } export default React.memo(ExpireNoticeModal)