Skip to content

Commit 9f810e8

Browse files
authored
fix(duplicate): added isWide and advacnedMode to optimistic duplicate, persist collapsed subblock state (#847)
* fix(duplicate): added isWide and advacnedMode to optimistic duplicate, ensured it persists on client & server * use collaborative set subblock value instead of doing it locally for collapsed subblocks * cleamup
1 parent 63b4a81 commit 9f810e8

File tree

16 files changed

+720
-27
lines changed

16 files changed

+720
-27
lines changed

apps/sim/app/api/__test-utils__/utils.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ export const sampleWorkflowState = {
9898
enabled: true,
9999
horizontalHandles: true,
100100
isWide: false,
101+
advancedMode: false,
101102
height: 95,
102103
},
103104
'agent-id': {
@@ -125,6 +126,7 @@ export const sampleWorkflowState = {
125126
enabled: true,
126127
horizontalHandles: true,
127128
isWide: false,
129+
advancedMode: false,
128130
height: 680,
129131
},
130132
},

apps/sim/app/api/tools/edit-workflow/route.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ export async function POST(request: NextRequest) {
175175
enabled: true,
176176
horizontalHandles: true,
177177
isWide: false,
178+
advancedMode: false,
178179
height: 0,
179180
data: block.data || {},
180181
}

apps/sim/app/api/workflows/[id]/yaml/route.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,7 @@ export async function PUT(request: NextRequest, { params }: { params: Promise<{
283283
enabled: true,
284284
horizontalHandles: true,
285285
isWide: false,
286+
advancedMode: false,
286287
height: 0,
287288
data: block.data || {},
288289
}
@@ -325,6 +326,7 @@ export async function PUT(request: NextRequest, { params }: { params: Promise<{
325326
enabled: true,
326327
horizontalHandles: true,
327328
isWide: false,
329+
advancedMode: false,
328330
height: 0,
329331
data: block.data || {},
330332
}

apps/sim/app/api/workflows/route.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ export async function POST(req: NextRequest) {
129129
enabled: true,
130130
horizontalHandles: true,
131131
isWide: false,
132+
advancedMode: false,
132133
height: 95,
133134
},
134135
},
@@ -176,6 +177,7 @@ export async function POST(req: NextRequest) {
176177
enabled: true,
177178
horizontalHandles: true,
178179
isWide: false,
180+
advancedMode: false,
179181
height: '95',
180182
subBlocks: {
181183
startWorkflow: {

apps/sim/app/api/workspaces/route.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ async function createWorkspace(userId: string, name: string) {
161161
enabled: true,
162162
horizontalHandles: true,
163163
isWide: false,
164+
advancedMode: false,
164165
height: 95,
165166
},
166167
},
@@ -206,6 +207,7 @@ async function createWorkspace(userId: string, name: string) {
206207
enabled: true,
207208
horizontalHandles: true,
208209
isWide: false,
210+
advancedMode: false,
209211
height: '95',
210212
subBlocks: {
211213
startWorkflow: {

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/workflow-block/components/sub-block/components/code.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { WandPromptBar } from '@/app/workspace/[workspaceId]/w/[workflowId]/comp
1414
import { useSubBlockValue } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/workflow-block/components/sub-block/hooks/use-sub-block-value'
1515
import { useWand } from '@/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-wand'
1616
import type { GenerationType } from '@/blocks/types'
17+
import { useCollaborativeWorkflow } from '@/hooks/use-collaborative-workflow'
1718
import { useTagSelection } from '@/hooks/use-tag-selection'
1819
import { useSubBlockStore } from '@/stores/workflows/subblock/store'
1920

@@ -96,7 +97,11 @@ export function Code({
9697
const collapsedStateKey = `${subBlockId}_collapsed`
9798
const isCollapsed =
9899
(useSubBlockStore((state) => state.getValue(blockId, collapsedStateKey)) as boolean) ?? false
99-
const setCollapsedValue = useSubBlockStore((state) => state.setValue)
100+
101+
const { collaborativeSetSubblockValue } = useCollaborativeWorkflow()
102+
const setCollapsedValue = (blockId: string, subblockId: string, value: any) => {
103+
collaborativeSetSubblockValue(blockId, subblockId, value)
104+
}
100105

101106
const showCollapseButton =
102107
(subBlockId === 'responseFormat' || subBlockId === 'code') && code.split('\n').length > 5

apps/sim/hooks/use-collaborative-workflow.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ export function useCollaborativeWorkflow() {
148148
workflowStore.setBlockWide(payload.id, payload.isWide)
149149
break
150150
case 'update-advanced-mode':
151-
workflowStore.toggleBlockAdvancedMode(payload.id)
151+
workflowStore.setBlockAdvancedMode(payload.id, payload.advancedMode)
152152
break
153153
case 'toggle-handles': {
154154
const currentBlock = workflowStore.blocks[payload.id]
@@ -433,6 +433,7 @@ export function useCollaborativeWorkflow() {
433433
enabled: true,
434434
horizontalHandles: true,
435435
isWide: false,
436+
advancedMode: false,
436437
height: 0,
437438
parentId,
438439
extent,
@@ -504,6 +505,7 @@ export function useCollaborativeWorkflow() {
504505
enabled: true,
505506
horizontalHandles: true,
506507
isWide: false,
508+
advancedMode: false,
507509
height: 0, // Default height, will be set by the UI
508510
parentId,
509511
extent,
@@ -811,6 +813,7 @@ export function useCollaborativeWorkflow() {
811813
enabled: sourceBlock.enabled ?? true,
812814
horizontalHandles: sourceBlock.horizontalHandles ?? true,
813815
isWide: sourceBlock.isWide ?? false,
816+
advancedMode: sourceBlock.advancedMode ?? false,
814817
height: sourceBlock.height || 0,
815818
}
816819

@@ -821,7 +824,14 @@ export function useCollaborativeWorkflow() {
821824
offsetPosition,
822825
sourceBlock.data ? JSON.parse(JSON.stringify(sourceBlock.data)) : {},
823826
sourceBlock.data?.parentId,
824-
sourceBlock.data?.extent
827+
sourceBlock.data?.extent,
828+
{
829+
enabled: sourceBlock.enabled,
830+
horizontalHandles: sourceBlock.horizontalHandles,
831+
isWide: sourceBlock.isWide,
832+
advancedMode: sourceBlock.advancedMode,
833+
height: sourceBlock.height,
834+
}
825835
)
826836

827837
executeQueuedOperation('duplicate', 'block', duplicatedBlockData, () => {
@@ -830,7 +840,16 @@ export function useCollaborativeWorkflow() {
830840
sourceBlock.type,
831841
newName,
832842
offsetPosition,
833-
sourceBlock.data ? JSON.parse(JSON.stringify(sourceBlock.data)) : {}
843+
sourceBlock.data ? JSON.parse(JSON.stringify(sourceBlock.data)) : {},
844+
sourceBlock.data?.parentId,
845+
sourceBlock.data?.extent,
846+
{
847+
enabled: sourceBlock.enabled,
848+
horizontalHandles: sourceBlock.horizontalHandles,
849+
isWide: sourceBlock.isWide,
850+
advancedMode: sourceBlock.advancedMode,
851+
height: sourceBlock.height,
852+
}
834853
)
835854

836855
// Apply subblock values locally for immediate UI feedback

0 commit comments

Comments
 (0)