From e665e802ec874d992a6f64047d7bb1d556b58125 Mon Sep 17 00:00:00 2001
From: Stephen Zhou <38493346+hyoban@users.noreply.github.com>
Date: Fri, 8 May 2026 18:12:45 +0800
Subject: [PATCH] remove rollback modal
---
.../deployments/components/rollback-modal.tsx | 157 ------------------
web/features/deployments/detail/index.tsx | 2 -
web/features/deployments/list/index.tsx | 2 -
web/features/deployments/store.ts | 33 ----
web/i18n/en-US/deployments.json | 12 --
web/i18n/zh-Hans/deployments.json | 12 --
6 files changed, 218 deletions(-)
delete mode 100644 web/features/deployments/components/rollback-modal.tsx
diff --git a/web/features/deployments/components/rollback-modal.tsx b/web/features/deployments/components/rollback-modal.tsx
deleted file mode 100644
index c0b06ca178..0000000000
--- a/web/features/deployments/components/rollback-modal.tsx
+++ /dev/null
@@ -1,157 +0,0 @@
-'use client'
-import {
- AlertDialog,
- AlertDialogActions,
- AlertDialogCancelButton,
- AlertDialogConfirmButton,
- AlertDialogContent,
- AlertDialogDescription,
- AlertDialogTitle,
-} from '@langgenius/dify-ui/alert-dialog'
-import { skipToken, useMutation, useQuery } from '@tanstack/react-query'
-import { useAtomValue, useSetAtom } from 'jotai'
-import { useTranslation } from 'react-i18next'
-import { consoleQuery } from '@/service/client'
-import { DEPLOYMENT_PAGE_SIZE } from '../data'
-import {
- closeRollbackModalAtom,
- rollbackModalAppInstanceIdAtom,
- rollbackModalEnvironmentIdAtom,
- rollbackModalOpenAtom,
- rollbackModalTargetReleaseIdAtom,
-} from '../store'
-import {
- activeRelease,
- deployedRows,
- environmentId,
- environmentName,
- environmentOptionsFromOptionsReply,
- releaseCommit,
- releaseLabel,
-} from '../utils'
-
-function InfoRow({ label, value }: {
- label: string
- value: string
-}) {
- return (
-
- {label}
- {value}
-
- )
-}
-
-export function RollbackModal() {
- const { t } = useTranslation('deployments')
- const open = useAtomValue(rollbackModalOpenAtom)
- const appInstanceId = useAtomValue(rollbackModalAppInstanceIdAtom)
- const modalEnvironmentId = useAtomValue(rollbackModalEnvironmentIdAtom)
- const targetReleaseId = useAtomValue(rollbackModalTargetReleaseIdAtom)
- const closeRollbackModal = useSetAtom(closeRollbackModalAtom)
- const rollbackDeployment = useMutation(consoleQuery.enterprise.appDeploy.createDeployment.mutationOptions())
- const appInput = appInstanceId
- ? { params: { appInstanceId } }
- : skipToken
- const { data: overview } = useQuery(consoleQuery.enterprise.appDeploy.getAppInstanceOverview.queryOptions({
- input: appInput,
- enabled: open && Boolean(appInstanceId),
- }))
- const { data: environmentDeployments } = useQuery(consoleQuery.enterprise.appDeploy.listRuntimeInstances.queryOptions({
- input: appInput,
- enabled: open && Boolean(appInstanceId),
- }))
- const { data: environmentOptionsReply } = useQuery(consoleQuery.enterprise.appDeploy.listDeploymentEnvironmentOptions.queryOptions({
- enabled: open,
- }))
- const { data: releaseHistory } = useQuery(consoleQuery.enterprise.appDeploy.listReleases.queryOptions({
- input: appInstanceId
- ? {
- params: { appInstanceId },
- query: {
- pageNumber: 1,
- resultsPerPage: DEPLOYMENT_PAGE_SIZE,
- },
- }
- : skipToken,
- enabled: open && Boolean(appInstanceId),
- }))
- const environmentOptions = environmentOptionsFromOptionsReply(environmentOptionsReply)
-
- const currentRow = deployedRows(environmentDeployments?.data)
- .find(row => environmentId(row.environment) === modalEnvironmentId)
- const targetRelease = [
- ...(releaseHistory?.data?.filter(release => !!release.id) ?? []),
- ].find(release => release.id === targetReleaseId)
- const currentRelease = activeRelease(currentRow)
- const environment = currentRow?.environment
- ?? environmentOptions.find(env => env.id === modalEnvironmentId)
- const app = overview?.instance
- const appName = app?.name ?? '-'
- const sourceAppName = app?.sourceAppName ?? appName
-
- const confirm = () => {
- if (!appInstanceId || !modalEnvironmentId || !targetReleaseId)
- return
- closeRollbackModal()
- rollbackDeployment.mutate({
- params: {
- appInstanceId,
- },
- body: {
- environmentId: modalEnvironmentId,
- releaseId: targetReleaseId,
- bindings: [],
- },
- })
- }
-
- return (
- !next && closeRollbackModal()}
- >
-
-
-
- {t('rollback.title', { release: releaseLabel(targetRelease) })}
-
-
- {t('rollback.description')}
-
-
-
-
-
-
-
-
-
-
-
-
- {t('rollback.impactingTitle')}
-
-
- {t('rollback.impactingBody')}
-
-
-
-
-
- {t('rollback.cancel')}
-
-
- {t('rollback.confirm')}
-
-
-
-
- )
-}
diff --git a/web/features/deployments/detail/index.tsx b/web/features/deployments/detail/index.tsx
index 2eca7cbf59..db57c65062 100644
--- a/web/features/deployments/detail/index.tsx
+++ b/web/features/deployments/detail/index.tsx
@@ -10,7 +10,6 @@ import Link from '@/next/link'
import { useSelectedLayoutSegment } from '@/next/navigation'
import { consoleQuery } from '@/service/client'
import { DeployDrawer } from '../components/deploy-drawer'
-import { RollbackModal } from '../components/rollback-modal'
import { DeploymentSidebar } from './deployment-sidebar'
import { isInstanceDetailTabKey } from './tabs'
@@ -78,7 +77,6 @@ export function InstanceDetail({ appInstanceId, children }: {
-
>
)
}
diff --git a/web/features/deployments/list/index.tsx b/web/features/deployments/list/index.tsx
index 17822aa296..3ca7db7299 100644
--- a/web/features/deployments/list/index.tsx
+++ b/web/features/deployments/list/index.tsx
@@ -7,7 +7,6 @@ import Input from '@/app/components/base/input'
import { consoleQuery } from '@/service/client'
import { CreateInstanceModal } from '../components/create-instance-modal'
import { DeployDrawer } from '../components/deploy-drawer'
-import { RollbackModal } from '../components/rollback-modal'
import { SOURCE_APPS_PAGE_SIZE } from '../data'
import { EnvironmentFilter } from './environment-filter'
import { InstanceCard } from './instance-card'
@@ -94,7 +93,6 @@ export function DeploymentsMain() {
-
>
)
}
diff --git a/web/features/deployments/store.ts b/web/features/deployments/store.ts
index c9d90cb6f1..261b951ff6 100644
--- a/web/features/deployments/store.ts
+++ b/web/features/deployments/store.ts
@@ -6,13 +6,6 @@ type OpenDeployDrawerParams = {
releaseId?: string
}
-type OpenRollbackParams = {
- appInstanceId: string
- environmentId: string
- targetReleaseId: string
- deploymentId?: string
-}
-
type CreatedDeveloperApiToken = {
appInstanceId: string
token: string
@@ -23,12 +16,6 @@ export const deployDrawerAppInstanceIdAtom = atom(undefined)
export const deployDrawerEnvironmentIdAtom = atom(undefined)
export const deployDrawerReleaseIdAtom = atom(undefined)
-export const rollbackModalOpenAtom = atom(false)
-export const rollbackModalAppInstanceIdAtom = atom(undefined)
-export const rollbackModalEnvironmentIdAtom = atom(undefined)
-export const rollbackModalDeploymentIdAtom = atom(undefined)
-export const rollbackModalTargetReleaseIdAtom = atom(undefined)
-
export const createInstanceModalOpenAtom = atom(false)
export const createdDeveloperApiTokenAtom = atom(undefined)
@@ -45,26 +32,6 @@ export const closeDeployDrawerAtom = atom(null, (_get, set) => {
set(deployDrawerReleaseIdAtom, undefined)
})
-export const openRollbackModalAtom = atom(null, (_get, set, {
- appInstanceId,
- environmentId,
- deploymentId,
- targetReleaseId,
-}: OpenRollbackParams) => {
- set(rollbackModalAppInstanceIdAtom, appInstanceId)
- set(rollbackModalEnvironmentIdAtom, environmentId)
- set(rollbackModalDeploymentIdAtom, deploymentId)
- set(rollbackModalTargetReleaseIdAtom, targetReleaseId)
- set(rollbackModalOpenAtom, true)
-})
-export const closeRollbackModalAtom = atom(null, (_get, set) => {
- set(rollbackModalOpenAtom, false)
- set(rollbackModalAppInstanceIdAtom, undefined)
- set(rollbackModalEnvironmentIdAtom, undefined)
- set(rollbackModalDeploymentIdAtom, undefined)
- set(rollbackModalTargetReleaseIdAtom, undefined)
-})
-
export const openCreateInstanceModalAtom = atom(null, (_get, set) => {
set(createInstanceModalOpenAtom, true)
})
diff --git a/web/i18n/en-US/deployments.json b/web/i18n/en-US/deployments.json
index 74f2acbe84..097cf4ccaf 100644
--- a/web/i18n/en-US/deployments.json
+++ b/web/i18n/en-US/deployments.json
@@ -182,7 +182,6 @@
"deployTab.panel.unknownError": "Deployment failed.",
"deployTab.promote": "Promote",
"deployTab.retry": "Retry",
- "deployTab.rollback": "Rollback...",
"deployTab.shortcut": "Shortcut",
"deployTab.status.deployFailed": "Deploy failed",
"deployTab.status.deployingRelease": "Deploying ({{release}})",
@@ -248,17 +247,6 @@
"overview.switchSourceAppHint": "After switching, only newly created releases use the new source app. Historical releases and existing deployments are not changed.",
"overview.viewDeployments": "View deployments",
"overview.webapp": "WebApp",
- "rollback.cancel": "Cancel",
- "rollback.confirm": "Deploy release",
- "rollback.currentRelease": "Current release",
- "rollback.description": "Deploying an existing release switches this environment's active release pointer; the underlying Runtime Shell is not rebuilt.",
- "rollback.environment": "Environment",
- "rollback.impactingBody": "The target release is loaded first, then the pointer is switched. In-flight workers drain before the cutover completes.",
- "rollback.impactingTitle": "Impacting action",
- "rollback.instance": "Instance",
- "rollback.rollbackTo": "Target release",
- "rollback.sourceApp": "Source app",
- "rollback.title": "Deploy {{release}}",
"settings.danger": "Danger zone",
"settings.dangerDesc": "Deleting this app instance removes deployment metadata after all environments are undeployed.",
"settings.delete": "Delete instance",
diff --git a/web/i18n/zh-Hans/deployments.json b/web/i18n/zh-Hans/deployments.json
index a453d7cb0d..fc95ba4c5b 100644
--- a/web/i18n/zh-Hans/deployments.json
+++ b/web/i18n/zh-Hans/deployments.json
@@ -182,7 +182,6 @@
"deployTab.panel.unknownError": "部署失败。",
"deployTab.promote": "发布",
"deployTab.retry": "重试",
- "deployTab.rollback": "回滚...",
"deployTab.shortcut": "快捷",
"deployTab.status.deployFailed": "部署失败",
"deployTab.status.deployingRelease": "部署中({{release}})",
@@ -248,17 +247,6 @@
"overview.switchSourceAppHint": "切换后,仅新建 Release 会使用新的源应用;历史 Release 和现有部署不受影响。",
"overview.viewDeployments": "查看部署",
"overview.webapp": "WebApp",
- "rollback.cancel": "取消",
- "rollback.confirm": "确认部署",
- "rollback.currentRelease": "当前发布",
- "rollback.description": "部署已有发布版本会切换该环境的活动发布指针,不会重建底层 Runtime Shell。",
- "rollback.environment": "环境",
- "rollback.impactingBody": "先加载目标发布版本,再切换指针。进行中的工作者会先完成排空再执行切换。",
- "rollback.impactingTitle": "影响操作",
- "rollback.instance": "实例",
- "rollback.rollbackTo": "目标发布",
- "rollback.sourceApp": "源应用",
- "rollback.title": "部署 {{release}}",
"settings.danger": "危险区域",
"settings.dangerDesc": "删除应用实例会在所有环境取消部署后移除部署元数据。",
"settings.delete": "删除实例",