'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' import type { UpdateFromMarketPlacePayload } from '../types' const i18nPrefix = 'plugin.upgrade' type Props = { payload: UpdateFromMarketPlacePayload onSave: () => void onCancel: () => void } enum UploadStep { notStarted = 'notStarted', upgrading = 'upgrading', installed = 'installed', } const UpdatePluginModal: FC = ({ onSave, onCancel, }) => { 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] }, [t, uploadStep]) const handleConfirm = useCallback(() => { if (uploadStep === UploadStep.notStarted) { setUploadStep(UploadStep.upgrading) setTimeout(() => { setUploadStep(UploadStep.installed) }, 1500) return } if (uploadStep === UploadStep.installed) { onSave() onCancel() } }, [onCancel, onSave, 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)