mirror of
https://github.com/langgenius/dify.git
synced 2026-05-10 05:56:31 +08:00
remove rollback modal
This commit is contained in:
parent
6d83bade00
commit
e665e802ec
@ -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 (
|
||||
<div className="flex items-start justify-between gap-4">
|
||||
<span className="system-xs-medium-uppercase text-text-tertiary">{label}</span>
|
||||
<span className="system-sm-medium text-text-primary">{value}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
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 (
|
||||
<AlertDialog
|
||||
open={open}
|
||||
onOpenChange={next => !next && closeRollbackModal()}
|
||||
>
|
||||
<AlertDialogContent className="w-[520px]">
|
||||
<div className="flex flex-col gap-3 px-6 pt-6 pb-2">
|
||||
<AlertDialogTitle className="title-2xl-semi-bold text-text-primary">
|
||||
{t('rollback.title', { release: releaseLabel(targetRelease) })}
|
||||
</AlertDialogTitle>
|
||||
<AlertDialogDescription className="system-md-regular text-text-tertiary">
|
||||
{t('rollback.description')}
|
||||
</AlertDialogDescription>
|
||||
|
||||
<div className="mt-2 flex flex-col gap-2 rounded-lg border border-components-panel-border bg-components-panel-bg-blur p-3">
|
||||
<InfoRow label={t('rollback.instance')} value={appName} />
|
||||
<InfoRow label={t('rollback.sourceApp')} value={sourceAppName} />
|
||||
<InfoRow label={t('rollback.environment')} value={environmentName(environment)} />
|
||||
<InfoRow
|
||||
label={t('rollback.currentRelease')}
|
||||
value={currentRelease ? `${releaseLabel(currentRelease)} / ${releaseCommit(currentRelease)}` : '-'}
|
||||
/>
|
||||
<InfoRow
|
||||
label={t('rollback.rollbackTo')}
|
||||
value={targetRelease ? `${releaseLabel(targetRelease)} / ${releaseCommit(targetRelease)}` : '-'}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="rounded-lg border border-dashed border-util-colors-red-red-200 bg-util-colors-red-red-50 p-3">
|
||||
<div className="title-sm-semi-bold text-util-colors-red-red-700">
|
||||
{t('rollback.impactingTitle')}
|
||||
</div>
|
||||
<p className="mt-1 system-xs-regular text-util-colors-red-red-600">
|
||||
{t('rollback.impactingBody')}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<AlertDialogActions>
|
||||
<AlertDialogCancelButton variant="secondary">
|
||||
{t('rollback.cancel')}
|
||||
</AlertDialogCancelButton>
|
||||
<AlertDialogConfirmButton onClick={confirm}>
|
||||
{t('rollback.confirm')}
|
||||
</AlertDialogConfirmButton>
|
||||
</AlertDialogActions>
|
||||
</AlertDialogContent>
|
||||
</AlertDialog>
|
||||
)
|
||||
}
|
||||
@ -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 }: {
|
||||
</div>
|
||||
|
||||
<DeployDrawer />
|
||||
<RollbackModal />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
@ -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() {
|
||||
<DeploymentsList />
|
||||
<CreateInstanceModal />
|
||||
<DeployDrawer />
|
||||
<RollbackModal />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
@ -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<string | undefined>(undefined)
|
||||
export const deployDrawerEnvironmentIdAtom = atom<string | undefined>(undefined)
|
||||
export const deployDrawerReleaseIdAtom = atom<string | undefined>(undefined)
|
||||
|
||||
export const rollbackModalOpenAtom = atom(false)
|
||||
export const rollbackModalAppInstanceIdAtom = atom<string | undefined>(undefined)
|
||||
export const rollbackModalEnvironmentIdAtom = atom<string | undefined>(undefined)
|
||||
export const rollbackModalDeploymentIdAtom = atom<string | undefined>(undefined)
|
||||
export const rollbackModalTargetReleaseIdAtom = atom<string | undefined>(undefined)
|
||||
|
||||
export const createInstanceModalOpenAtom = atom(false)
|
||||
export const createdDeveloperApiTokenAtom = atom<CreatedDeveloperApiToken | undefined>(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)
|
||||
})
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": "删除实例",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user