|
|
|
|
@ -8,7 +8,6 @@ import { VersionHistoryContextMenuOptions, WorkflowVersionFilterOptions } from '
|
|
|
|
|
import VersionHistoryItem from './version-history-item'
|
|
|
|
|
import Filter from './filter'
|
|
|
|
|
import type { VersionHistory } from '@/types/workflow'
|
|
|
|
|
import { useStore as useAppStore } from '@/app/components/app/store'
|
|
|
|
|
import { useDeleteWorkflow, useResetWorkflowVersionHistory, useUpdateWorkflow, useWorkflowVersionHistory } from '@/service/use-workflow'
|
|
|
|
|
import Divider from '@/app/components/base/divider'
|
|
|
|
|
import Loading from './loading'
|
|
|
|
|
@ -22,7 +21,18 @@ import Toast from '@/app/components/base/toast'
|
|
|
|
|
const HISTORY_PER_PAGE = 10
|
|
|
|
|
const INITIAL_PAGE = 1
|
|
|
|
|
|
|
|
|
|
const VersionHistoryPanel = () => {
|
|
|
|
|
export type VersionHistoryPanelProps = {
|
|
|
|
|
getVersionListUrl?: string
|
|
|
|
|
deleteVersionUrl?: (versionId: string) => string
|
|
|
|
|
updateVersionUrl?: (versionId: string) => string
|
|
|
|
|
latestVersionId?: string
|
|
|
|
|
}
|
|
|
|
|
export const VersionHistoryPanel = ({
|
|
|
|
|
getVersionListUrl,
|
|
|
|
|
deleteVersionUrl,
|
|
|
|
|
updateVersionUrl,
|
|
|
|
|
latestVersionId,
|
|
|
|
|
}: VersionHistoryPanelProps) => {
|
|
|
|
|
const [filterValue, setFilterValue] = useState(WorkflowVersionFilterOptions.all)
|
|
|
|
|
const [isOnlyShowNamedVersions, setIsOnlyShowNamedVersions] = useState(false)
|
|
|
|
|
const [operatedItem, setOperatedItem] = useState<VersionHistory>()
|
|
|
|
|
@ -32,7 +42,6 @@ const VersionHistoryPanel = () => {
|
|
|
|
|
const workflowStore = useWorkflowStore()
|
|
|
|
|
const { handleSyncWorkflowDraft } = useNodesSyncDraft()
|
|
|
|
|
const { handleRestoreFromPublishedWorkflow, handleLoadBackupDraft } = useWorkflowRun()
|
|
|
|
|
const appDetail = useAppStore.getState().appDetail
|
|
|
|
|
const setShowWorkflowVersionHistoryPanel = useStore(s => s.setShowWorkflowVersionHistoryPanel)
|
|
|
|
|
const currentVersion = useStore(s => s.currentVersion)
|
|
|
|
|
const setCurrentVersion = useStore(s => s.setCurrentVersion)
|
|
|
|
|
@ -45,7 +54,7 @@ const VersionHistoryPanel = () => {
|
|
|
|
|
hasNextPage,
|
|
|
|
|
isFetching,
|
|
|
|
|
} = useWorkflowVersionHistory({
|
|
|
|
|
appId: appDetail!.id,
|
|
|
|
|
url: getVersionListUrl || '',
|
|
|
|
|
initialPage: INITIAL_PAGE,
|
|
|
|
|
limit: HISTORY_PER_PAGE,
|
|
|
|
|
userId: filterValue === WorkflowVersionFilterOptions.onlyYours ? userProfile.id : '',
|
|
|
|
|
@ -112,7 +121,7 @@ const VersionHistoryPanel = () => {
|
|
|
|
|
}
|
|
|
|
|
}, [])
|
|
|
|
|
|
|
|
|
|
const resetWorkflowVersionHistory = useResetWorkflowVersionHistory(appDetail!.id)
|
|
|
|
|
const resetWorkflowVersionHistory = useResetWorkflowVersionHistory()
|
|
|
|
|
|
|
|
|
|
const handleRestore = useCallback((item: VersionHistory) => {
|
|
|
|
|
setShowWorkflowVersionHistoryPanel(false)
|
|
|
|
|
@ -138,10 +147,10 @@ const VersionHistoryPanel = () => {
|
|
|
|
|
})
|
|
|
|
|
}, [setShowWorkflowVersionHistoryPanel, handleSyncWorkflowDraft, workflowStore, handleRestoreFromPublishedWorkflow, resetWorkflowVersionHistory, t])
|
|
|
|
|
|
|
|
|
|
const { mutateAsync: deleteWorkflow } = useDeleteWorkflow(appDetail!.id)
|
|
|
|
|
const { mutateAsync: deleteWorkflow } = useDeleteWorkflow()
|
|
|
|
|
|
|
|
|
|
const handleDelete = useCallback(async (id: string) => {
|
|
|
|
|
await deleteWorkflow(id, {
|
|
|
|
|
await deleteWorkflow(deleteVersionUrl?.(id) || '', {
|
|
|
|
|
onSuccess: () => {
|
|
|
|
|
setDeleteConfirmOpen(false)
|
|
|
|
|
Toast.notify({
|
|
|
|
|
@ -160,14 +169,14 @@ const VersionHistoryPanel = () => {
|
|
|
|
|
setDeleteConfirmOpen(false)
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
}, [t, deleteWorkflow, resetWorkflowVersionHistory])
|
|
|
|
|
}, [t, deleteWorkflow, resetWorkflowVersionHistory, deleteVersionUrl])
|
|
|
|
|
|
|
|
|
|
const { mutateAsync: updateWorkflow } = useUpdateWorkflow(appDetail!.id)
|
|
|
|
|
const { mutateAsync: updateWorkflow } = useUpdateWorkflow()
|
|
|
|
|
|
|
|
|
|
const handleUpdateWorkflow = useCallback(async (params: { id?: string, title: string, releaseNotes: string }) => {
|
|
|
|
|
const { id, ...rest } = params
|
|
|
|
|
await updateWorkflow({
|
|
|
|
|
workflowId: id!,
|
|
|
|
|
url: updateVersionUrl?.(id || '') || '',
|
|
|
|
|
...rest,
|
|
|
|
|
}, {
|
|
|
|
|
onSuccess: () => {
|
|
|
|
|
@ -188,7 +197,7 @@ const VersionHistoryPanel = () => {
|
|
|
|
|
setEditModalOpen(false)
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
}, [t, updateWorkflow, resetWorkflowVersionHistory])
|
|
|
|
|
}, [t, updateWorkflow, resetWorkflowVersionHistory, updateVersionUrl])
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div className='flex w-[268px] flex-col rounded-l-2xl border-y-[0.5px] border-l-[0.5px] border-components-panel-border bg-components-panel-bg shadow-xl shadow-shadow-shadow-5'>
|
|
|
|
|
@ -222,7 +231,7 @@ const VersionHistoryPanel = () => {
|
|
|
|
|
key={item.id}
|
|
|
|
|
item={item}
|
|
|
|
|
currentVersion={currentVersion}
|
|
|
|
|
latestVersionId={appDetail!.workflow!.id}
|
|
|
|
|
latestVersionId={latestVersionId || ''}
|
|
|
|
|
onClick={handleVersionClick}
|
|
|
|
|
handleClickMenuItem={handleClickMenuItem.bind(null, item)}
|
|
|
|
|
isLast={isLast}
|
|
|
|
|
|