'use client' import type { FC } from 'react' import React, { useCallback, useMemo, useState } from 'react' import { RiInformation2Line } from '@remixicon/react' import { useTranslation } from 'react-i18next' import Card from '@/app/components/plugins/card' import Modal from '@/app/components/base/modal' import Button from '@/app/components/base/button' import Badge, { BadgeState } from '@/app/components/base/badge/index' import { toolNotion } from '@/app/components/plugins/card/card-mock' const i18nPrefix = 'plugin.upgrade' type Props = { onHide: () => void } enum UploadStep { notStarted = 'notStarted', upgrading = 'upgrading', installed = 'installed', } const UpdatePluginModal: FC = ({ onHide, }) => { const { t } = useTranslation() const [uploadStep, setUploadStep] = useState(UploadStep.notStarted) const configBtnText = useMemo(() => { return ({ [UploadStep.notStarted]: t(`${i18nPrefix}.upgrade`), [UploadStep.upgrading]: t(`${i18nPrefix}.upgrading`), [UploadStep.installed]: t(`${i18nPrefix}.close`), })[uploadStep] }, [uploadStep]) const handleConfirm = useCallback(() => { if (uploadStep === UploadStep.notStarted) { setUploadStep(UploadStep.upgrading) setTimeout(() => { setUploadStep(UploadStep.installed) }, 1500) return } if (uploadStep === UploadStep.installed) onHide() }, [uploadStep]) return (
{t(`${i18nPrefix}.description`)}
{'1.2.0 -> 1.3.2'}
{t(`${i18nPrefix}.usedInApps`, { num: 3 })}
{/* show the used apps */}
} />
{uploadStep === UploadStep.notStarted && ( )}
) } export default React.memo(UpdatePluginModal)