import { IconButton } from '@langgenius/dify-ui/icon-button' import { memo, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import ViewWorkflowHistory from '@/app/components/workflow/header/view-workflow-history' import { useWorkflowHistoryStore } from '@/app/components/workflow/workflow-history-store' import Divider from '../../base/divider' import { useNodesReadOnly } from '../hooks/use-workflow' import TipPopup from '../operator/tip-popup' type UndoRedoProps = { handleUndo: () => void; handleRedo: () => void } function UndoRedo({ handleUndo, handleRedo }: UndoRedoProps) { const { t } = useTranslation() const { store } = useWorkflowHistoryStore() const [buttonsDisabled, setButtonsDisabled] = useState({ undo: true, redo: true }) useEffect(() => { const unsubscribe = store.temporal.subscribe((state) => { setButtonsDisabled({ undo: state.pastStates.length === 0, redo: state.futureStates.length === 0, }) }) return () => unsubscribe() }, [store]) const { nodesReadOnly } = useNodesReadOnly() return (
$['common.undo'], { ns: 'workflow' })!} shortcut="workflow.undo"> $['common.undo'], { ns: 'workflow' })!} data-tooltip-id="workflow.undo" disabled={nodesReadOnly || buttonsDisabled.undo} focusableWhenDisabled onClick={handleUndo} > $['common.redo'], { ns: 'workflow' })!} shortcut="workflow.redo"> $['common.redo'], { ns: 'workflow' })!} data-tooltip-id="workflow.redo" disabled={nodesReadOnly || buttonsDisabled.redo} focusableWhenDisabled onClick={handleRedo} >
) } export default memo(UndoRedo)