| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import {
- useCallback,
- } from 'react'
- import { RiHistoryLine } from '@remixicon/react'
- import { useTranslation } from 'react-i18next'
- import {
- useStore,
- useWorkflowStore,
- } from '../store'
- import {
- WorkflowVersion,
- } from '../types'
- import {
- useNodesSyncDraft,
- useWorkflowRun,
- } from '../hooks'
- import Toast from '../../base/toast'
- import RestoringTitle from './restoring-title'
- import Button from '@/app/components/base/button'
-
- export type HeaderInRestoringProps = {
- onRestoreSettled?: () => void
- }
- const HeaderInRestoring = ({
- onRestoreSettled,
- }: HeaderInRestoringProps) => {
- const { t } = useTranslation()
- const workflowStore = useWorkflowStore()
- const currentVersion = useStore(s => s.currentVersion)
- const setShowWorkflowVersionHistoryPanel = useStore(s => s.setShowWorkflowVersionHistoryPanel)
-
- const {
- handleLoadBackupDraft,
- } = useWorkflowRun()
- const { handleSyncWorkflowDraft } = useNodesSyncDraft()
-
- const handleCancelRestore = useCallback(() => {
- handleLoadBackupDraft()
- workflowStore.setState({ isRestoring: false })
- setShowWorkflowVersionHistoryPanel(false)
- }, [workflowStore, handleLoadBackupDraft, setShowWorkflowVersionHistoryPanel])
-
- const handleRestore = useCallback(() => {
- setShowWorkflowVersionHistoryPanel(false)
- workflowStore.setState({ isRestoring: false })
- workflowStore.setState({ backupDraft: undefined })
- handleSyncWorkflowDraft(true, false, {
- onSuccess: () => {
- Toast.notify({
- type: 'success',
- message: t('workflow.versionHistory.action.restoreSuccess'),
- })
- },
- onError: () => {
- Toast.notify({
- type: 'error',
- message: t('workflow.versionHistory.action.restoreFailure'),
- })
- },
- onSettled: () => {
- onRestoreSettled?.()
- },
- })
- }, [handleSyncWorkflowDraft, workflowStore, setShowWorkflowVersionHistoryPanel, onRestoreSettled, t])
-
- return (
- <>
- <div>
- <RestoringTitle />
- </div>
- <div className='flex items-center justify-end gap-x-2'>
- <Button
- onClick={handleRestore}
- disabled={!currentVersion || currentVersion.version === WorkflowVersion.Draft}
- variant='primary'
- >
- {t('workflow.common.restore')}
- </Button>
- <Button
- className='text-components-button-secondary-accent-text'
- onClick={handleCancelRestore}
- >
- <div className='flex items-center gap-x-0.5'>
- <RiHistoryLine className='h-4 w-4' />
- <span className='px-0.5'>{t('workflow.common.exitVersions')}</span>
- </div>
- </Button>
- </div>
- </>
- )
- }
-
- export default HeaderInRestoring
|