Commit 54d9cdaa authored by StyleZhang's avatar StyleZhang

sync workflow draft

parent 76fe3c1d
...@@ -24,6 +24,7 @@ import { getLayoutByDagre } from './utils' ...@@ -24,6 +24,7 @@ import { getLayoutByDagre } from './utils'
import { useStore } from './store' import { useStore } from './store'
import { syncWorkflowDraft } from '@/service/workflow' import { syncWorkflowDraft } from '@/service/workflow'
import { useFeaturesStore } from '@/app/components/base/features/hooks' import { useFeaturesStore } from '@/app/components/base/features/hooks'
import { useStore as useAppStore } from '@/app/components/app/store'
export const useNodesInitialData = () => { export const useNodesInitialData = () => {
const { t } = useTranslation() const { t } = useTranslation()
...@@ -46,17 +47,20 @@ export const useWorkflow = () => { ...@@ -46,17 +47,20 @@ export const useWorkflow = () => {
getNodes, getNodes,
edges, edges,
} = store.getState() } = store.getState()
const appId = useAppStore.getState().appDetail?.id
syncWorkflowDraft({
url: `/apps/${''}/workflows/draft`, if (appId) {
params: { syncWorkflowDraft({
graph: { url: `/apps/${appId}/workflows/draft`,
nodes: getNodes(), params: {
edges, graph: {
nodes: getNodes(),
edges,
},
features: {},
}, },
features: {}, })
}, }
})
}, [store]) }, [store])
const handleLayout = useCallback(async () => { const handleLayout = useCallback(async () => {
...@@ -136,7 +140,8 @@ export const useWorkflow = () => { ...@@ -136,7 +140,8 @@ export const useWorkflow = () => {
} = useStore.getState() } = useStore.getState()
setIsDragging(false) setIsDragging(false)
setHelpLine() setHelpLine()
}, []) handleSyncWorkflowDraft()
}, [handleSyncWorkflowDraft])
const handleNodeEnter = useCallback<NodeMouseHandler>((_, node) => { const handleNodeEnter = useCallback<NodeMouseHandler>((_, node) => {
const { const {
...@@ -198,7 +203,8 @@ export const useWorkflow = () => { ...@@ -198,7 +203,8 @@ export const useWorkflow = () => {
selectedNode.data._selected = true selectedNode.data._selected = true
}) })
setNodes(newNodes) setNodes(newNodes)
}, [store]) handleSyncWorkflowDraft()
}, [store, handleSyncWorkflowDraft])
const handleNodeClick = useCallback<NodeMouseHandler>((_, node) => { const handleNodeClick = useCallback<NodeMouseHandler>((_, node) => {
if (useStore.getState().isDragging) if (useStore.getState().isDragging)
...@@ -233,7 +239,8 @@ export const useWorkflow = () => { ...@@ -233,7 +239,8 @@ export const useWorkflow = () => {
return filtered return filtered
}) })
setEdges(newEdges) setEdges(newEdges)
}, [store]) handleSyncWorkflowDraft()
}, [store, handleSyncWorkflowDraft])
const handleNodeDelete = useCallback((nodeId: string) => { const handleNodeDelete = useCallback((nodeId: string) => {
const { const {
...@@ -255,7 +262,8 @@ export const useWorkflow = () => { ...@@ -255,7 +262,8 @@ export const useWorkflow = () => {
return draft.filter(edge => !connectedEdges.find(connectedEdge => connectedEdge.id === edge.id)) return draft.filter(edge => !connectedEdges.find(connectedEdge => connectedEdge.id === edge.id))
}) })
setEdges(newEdges) setEdges(newEdges)
}, [store]) handleSyncWorkflowDraft()
}, [store, handleSyncWorkflowDraft])
const handleNodeDataUpdate = useCallback(({ id, data }: { id: string; data: Record<string, any> }) => { const handleNodeDataUpdate = useCallback(({ id, data }: { id: string; data: Record<string, any> }) => {
const { const {
...@@ -310,7 +318,8 @@ export const useWorkflow = () => { ...@@ -310,7 +318,8 @@ export const useWorkflow = () => {
draft.push(newEdge) draft.push(newEdge)
}) })
setEdges(newEdges) setEdges(newEdges)
}, [store, nodesInitialData]) handleSyncWorkflowDraft()
}, [store, nodesInitialData, handleSyncWorkflowDraft])
const handleNodeChange = useCallback((currentNodeId: string, nodeType: BlockEnum, sourceHandle?: string) => { const handleNodeChange = useCallback((currentNodeId: string, nodeType: BlockEnum, sourceHandle?: string) => {
const { const {
...@@ -360,8 +369,9 @@ export const useWorkflow = () => { ...@@ -360,8 +369,9 @@ export const useWorkflow = () => {
return filtered return filtered
}) })
setEdges(newEdges) setEdges(newEdges)
handleSyncWorkflowDraft()
} }
}, [store, nodesInitialData]) }, [store, nodesInitialData, handleSyncWorkflowDraft])
const handleEdgeEnter = useCallback<EdgeMouseHandler>((_, edge) => { const handleEdgeEnter = useCallback<EdgeMouseHandler>((_, edge) => {
const { const {
...@@ -401,7 +411,8 @@ export const useWorkflow = () => { ...@@ -401,7 +411,8 @@ export const useWorkflow = () => {
draft.splice(index, 1) draft.splice(index, 1)
}) })
setEdges(newEdges) setEdges(newEdges)
}, [store]) handleSyncWorkflowDraft()
}, [store, handleSyncWorkflowDraft])
const handleEdgesChange = useCallback<OnEdgesChange>((changes) => { const handleEdgesChange = useCallback<OnEdgesChange>((changes) => {
const { const {
......
...@@ -3,7 +3,6 @@ import { ...@@ -3,7 +3,6 @@ import {
memo, memo,
useMemo, useMemo,
} from 'react' } from 'react'
import { useParams } from 'next/navigation'
import useSWR from 'swr' import useSWR from 'swr'
import { useKeyPress } from 'ahooks' import { useKeyPress } from 'ahooks'
import ReactFlow, { import ReactFlow, {
...@@ -120,10 +119,7 @@ const WorkflowWrap: FC<WorkflowProps> = ({ ...@@ -120,10 +119,7 @@ const WorkflowWrap: FC<WorkflowProps> = ({
edges, edges,
}) => { }) => {
const appDetail = useAppStore(state => state.appDetail) const appDetail = useAppStore(state => state.appDetail)
console.log(appDetail?.name) const { data, isLoading, error } = useSWR(appDetail?.id ? `/apps/${appDetail.id}/workflows/draft` : null, fetchWorkflowDraft)
console.log(appDetail?.description)
const appId = useParams().appId
const { data, isLoading, error } = useSWR(`/apps/${appId}/workflows/draft`, fetchWorkflowDraft)
const nodesInitialData = useNodesInitialData() const nodesInitialData = useNodesInitialData()
const startNode = { const startNode = {
...@@ -155,9 +151,9 @@ const WorkflowWrap: FC<WorkflowProps> = ({ ...@@ -155,9 +151,9 @@ const WorkflowWrap: FC<WorkflowProps> = ({
return [] return []
}, [data, nodes]) }, [data, nodes])
if (error) { if (error && appDetail) {
syncWorkflowDraft({ syncWorkflowDraft({
url: `/apps/${appId}/workflows/draft`, url: `/apps/${appDetail.id}/workflows/draft`,
params: { params: {
graph: { graph: {
nodes: [startNode], nodes: [startNode],
......
...@@ -31,7 +31,7 @@ const NodeControl: FC<NodeControlProps> = ({ ...@@ -31,7 +31,7 @@ const NodeControl: FC<NodeControlProps> = ({
) )
} }
<div <div
className='flex items-center justify-center w-5 h-5 cursor-pointer' className='flex items-center justify-center w-5 h-5 rounded-md cursor-pointer hover:bg-black/5'
onClick={() => { onClick={() => {
handleNodeDataUpdate({ handleNodeDataUpdate({
id: nodeId, id: nodeId,
...@@ -45,7 +45,7 @@ const NodeControl: FC<NodeControlProps> = ({ ...@@ -45,7 +45,7 @@ const NodeControl: FC<NodeControlProps> = ({
: <Play className='w-3 h-3' /> : <Play className='w-3 h-3' />
} }
</div> </div>
<div className='flex items-center justify-center w-5 h-5 cursor-pointer'> <div className='flex items-center justify-center w-5 h-5 rounded-md cursor-pointer hover:bg-black/5'>
<DotsHorizontal className='w-3 h-3' /> <DotsHorizontal className='w-3 h-3' />
</div> </div>
</div> </div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment