feat: downgrade modal i18n

This commit is contained in:
Joel 2025-06-24 16:15:26 +08:00
parent c6fa8102eb
commit a0804786fd
4 changed files with 36 additions and 12 deletions

View File

@ -146,6 +146,13 @@ const DetailHeader = ({
const handleUpdatedFromMarketplace = () => {
onUpdate()
hideUpdateModal()
hideDowngradeWarningModal()
}
const handleExcludeAndDownload = async () => {
// TODO: exclude logic
onUpdate()
hideDowngradeWarningModal()
}
const [isShowPluginInfo, {
@ -330,7 +337,8 @@ const DetailHeader = ({
{ isShowDowngradeWarningModal && (
<DowngradeWarningModal
onCancel={hideDowngradeWarningModal}
onSave={handleUpdatedFromMarketplace}
onJustDowngrade={handleUpdatedFromMarketplace}
onExcludeAndDowngrade={handleExcludeAndDownload}
/>
)}
</div>

View File

@ -2,15 +2,17 @@ import { useTranslation } from 'react-i18next'
import Modal from '@/app/components/base/modal'
import Button from '@/app/components/base/button'
const i18nPrefix = 'plugin.autoUpdate.pluginDowngradeWarning'
type Props = {
onCancel: () => void
onSave: () => void
confirmDisabled?: boolean
onJustDowngrade: () => void
onExcludeAndDowngrade: () => void
}
const DowngradeWarningModal = ({
onCancel,
onSave,
confirmDisabled = false,
onJustDowngrade,
onExcludeAndDowngrade,
}: Props) => {
const { t } = useTranslation()
@ -18,17 +20,18 @@ const DowngradeWarningModal = ({
<Modal
isShow
onClose={() => onCancel()}
className='w-[480px]'
className='w-[640px] max-w-[640px]'
>
<div className='flex flex-col items-start gap-2 self-stretch pb-4'>
<div className='title-2xl-semi-bold text-text-primary'>Plugin Downgrade</div>
<div className='system-md-regular flex grow flex-col text-text-secondary'>
Auto-update is currently enabled for this plugin. Downgrading the version may cause your changes to be overwritten during the next automatic update.
<div className='flex flex-col items-start gap-2 self-stretch'>
<div className='title-2xl-semi-bold text-text-primary'>{t(`${i18nPrefix}.title`)}</div>
<div className='system-md-regular text-text-secondary'>
{t(`${i18nPrefix}.description`)}
</div>
</div>
<div className='flex items-start justify-end gap-2 self-stretch pt-6'>
<div className='mt-9 flex items-start justify-end space-x-2 self-stretch'>
<Button variant='secondary' onClick={() => onCancel()}>{t('app.newApp.Cancel')}</Button>
<Button variant='primary' destructive onClick={onSave} disabled={confirmDisabled}>{t('app.newApp.Confirm')}</Button>
<Button variant='secondary' destructive onClick={onJustDowngrade}>{t(`${i18nPrefix}.downgrade`)}</Button>
<Button variant='primary' onClick={onExcludeAndDowngrade}>{t(`${i18nPrefix}.exclude`)}</Button>
</div>
</Modal>
)

View File

@ -144,6 +144,12 @@ const translation = {
partial: 'Only selected plugins will auto-update. No plugins are currently selected, so no plugins will auto-update.',
},
nextUpdateTime: 'Next auto-update: {{time}}',
pluginDowngradeWarning: {
title: 'Plugin Downgrade',
description: 'Auto-update is currently enabled for this plugin. Downgrading the version may cause your changes to be overwritten during the next automatic update.',
downgrade: 'Downgrade anyway',
exclude: 'Exclude from auto-update',
},
},
pluginInfoModal: {
title: 'Plugin info',

View File

@ -143,6 +143,13 @@ const translation = {
exclude: '选定的插件将不会自动更新',
partial: '仅选定的插件将自动更新。目前未选择任何插件,因此不会自动更新任何插件。',
},
nextUpdateTime: '下次自动更新时间: {{time}}',
pluginDowngradeWarning: {
title: '插件降级',
description: '此插件目前已启用自动更新。降级版本可能会导致您的更改在下次自动更新时被覆盖。',
downgrade: '仍然降级',
exclude: '从自动更新中排除',
},
},
pluginInfoModal: {
title: '插件信息',