diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx index 6240e0ac7..07bb0c143 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx @@ -2156,7 +2156,7 @@ const WorkflowContent = React.memo(() => { parentId: block.data?.parentId, extent: block.data?.extent || undefined, dragHandle: '.workflow-drag-handle', - draggable: !block.locked, + draggable: !isBlockProtected(block.id, blocks), data: { ...block.data, name: block.name, @@ -2192,7 +2192,7 @@ const WorkflowContent = React.memo(() => { position, parentId: block.data?.parentId, dragHandle, - draggable: !block.locked, + draggable: !isBlockProtected(block.id, blocks), extent: (() => { // Clamp children to subflow body (exclude header) const parentId = block.data?.parentId as string | undefined diff --git a/apps/sim/socket/database/operations.ts b/apps/sim/socket/database/operations.ts index b2491f1e4..2aae11de3 100644 --- a/apps/sim/socket/database/operations.ts +++ b/apps/sim/socket/database/operations.ts @@ -870,8 +870,10 @@ async function handleBlocksOperationTx( } } - // Determine target locked state based on first block - const firstBlock = blocksById[blockIds[0]] + // Determine target locked state based on first toggleable block + if (blocksToToggle.size === 0) break + const firstToggleableId = Array.from(blocksToToggle)[0] + const firstBlock = blocksById[firstToggleableId] if (!firstBlock) break const targetLocked = !firstBlock.locked