From 86579cd35e77a07f547e968bc0b9242e644dc12e Mon Sep 17 00:00:00 2001 From: Joel Date: Tue, 24 Jun 2025 11:21:57 +0800 Subject: [PATCH] feat: show downgrade warning logic --- .../plugins/plugin-detail-panel/detail-header.tsx | 13 +++++++++++++ .../plugins/update-plugin/plugin-version-picker.tsx | 9 +++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/web/app/components/plugins/plugin-detail-panel/detail-header.tsx b/web/app/components/plugins/plugin-detail-panel/detail-header.tsx index 4762c6c7e1..5d89b57f5f 100644 --- a/web/app/components/plugins/plugin-detail-panel/detail-header.tsx +++ b/web/app/components/plugins/plugin-detail-panel/detail-header.tsx @@ -93,6 +93,7 @@ const DetailHeader = ({ const [targetVersion, setTargetVersion] = useState({ version: latest_version, unique_identifier: latest_unique_identifier, + isDowngrade: false, }) const hasNewVersion = useMemo(() => { if (isFromMarketplace) @@ -114,8 +115,18 @@ const DetailHeader = ({ setFalse: hideUpdateModal, }] = useBoolean(false) + const isAutoUpgradeEnabled = true // toeo + const [isShowDowngradeWarningModal, { + setTrue: showDowngradeWarningModal, + setFalse: hideDowngradeWarningModal, + }] = useBoolean(false) + const handleUpdate = async () => { if (isFromMarketplace) { + if(isAutoUpgradeEnabled && targetVersion.isDowngrade) { + showDowngradeWarningModal() + return + } showUpdateModal() return } @@ -238,6 +249,7 @@ const DetailHeader = ({ setTargetVersion({ version: latest_version, unique_identifier: latest_unique_identifier, + isDowngrade: false, }) } handleUpdate() @@ -351,6 +363,7 @@ const DetailHeader = ({ /> ) } + { isShowDowngradeWarningModal && (
aaa
)} ) } diff --git a/web/app/components/plugins/update-plugin/plugin-version-picker.tsx b/web/app/components/plugins/update-plugin/plugin-version-picker.tsx index 424f76d790..36a4faace1 100644 --- a/web/app/components/plugins/update-plugin/plugin-version-picker.tsx +++ b/web/app/components/plugins/update-plugin/plugin-version-picker.tsx @@ -15,6 +15,7 @@ import type { import { useVersionListOfPlugin } from '@/service/use-plugins' import useTimestamp from '@/hooks/use-timestamp' import cn from '@/utils/classnames' +import { lt } from 'semver' type Props = { disabled?: boolean @@ -28,9 +29,11 @@ type Props = { onSelect: ({ version, unique_identifier, + isDowngrade, }: { version: string unique_identifier: string + isDowngrade: boolean }) => void } @@ -59,13 +62,14 @@ const PluginVersionPicker: FC = ({ const { data: res } = useVersionListOfPlugin(pluginID) - const handleSelect = useCallback(({ version, unique_identifier }: { + const handleSelect = useCallback(({ version, unique_identifier, isDowngrade }: { version: string unique_identifier: string + isDowngrade: boolean }) => { if (currentVersion === version) return - onSelect({ version, unique_identifier }) + onSelect({ version, unique_identifier, isDowngrade }) onShowChange(false) }, [currentVersion, onSelect, onShowChange]) @@ -99,6 +103,7 @@ const PluginVersionPicker: FC = ({ onClick={() => handleSelect({ version: version.version, unique_identifier: version.unique_identifier, + isDowngrade: lt(version.version, currentVersion), })} >