mirror of
https://github.com/simstudioai/sim.git
synced 2026-04-28 03:00:29 -04:00
fix: merge subblock values in auto-layout to prevent losing router context (#4055)
Auto-layout was reading from getWorkflowState() without merging subblock store values, then persisting stale subblock data to the database. This caused runtime-edited values (e.g. router_v2 context) to be overwritten with their initial/empty values whenever auto-layout was triggered.
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
||||
DEFAULT_LAYOUT_PADDING,
|
||||
DEFAULT_VERTICAL_SPACING,
|
||||
} from '@/lib/workflows/autolayout/constants'
|
||||
import { mergeSubblockState } from '@/stores/workflows/utils'
|
||||
import { useWorkflowStore } from '@/stores/workflows/workflow/store'
|
||||
|
||||
const logger = createLogger('AutoLayoutUtils')
|
||||
@@ -109,10 +110,12 @@ export async function applyAutoLayoutAndUpdateStore(
|
||||
return { success: false, error: errorMessage }
|
||||
}
|
||||
|
||||
// Update workflow store immediately with new positions
|
||||
const layoutedBlocks = result.data?.layoutedBlocks || blocks
|
||||
const mergedBlocks = mergeSubblockState(layoutedBlocks, workflowId)
|
||||
|
||||
const newWorkflowState = {
|
||||
...workflowStore.getWorkflowState(),
|
||||
blocks: result.data?.layoutedBlocks || blocks,
|
||||
blocks: mergedBlocks,
|
||||
lastSaved: Date.now(),
|
||||
}
|
||||
|
||||
@@ -167,9 +170,10 @@ export async function applyAutoLayoutAndUpdateStore(
|
||||
})
|
||||
|
||||
// Revert the store changes since database save failed
|
||||
const revertBlocks = mergeSubblockState(blocks, workflowId)
|
||||
useWorkflowStore.getState().replaceWorkflowState({
|
||||
...workflowStore.getWorkflowState(),
|
||||
blocks,
|
||||
blocks: revertBlocks,
|
||||
lastSaved: workflowStore.lastSaved,
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user