From 0a08ac03b955298b4cfa33348d8cb9e5d0e922a7 Mon Sep 17 00:00:00 2001 From: Waleed Date: Tue, 3 Feb 2026 20:18:08 -0800 Subject: [PATCH] fix(import): preserve workflow colors during import (#3130) * fix(import): preserve workflow colors during import * cleanup --- .../w/hooks/use-import-workflow.ts | 24 +++++++++---------- .../w/hooks/use-import-workspace.ts | 20 ++++++++++------ 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/hooks/use-import-workflow.ts b/apps/sim/app/workspace/[workspaceId]/w/hooks/use-import-workflow.ts index e186f1279..b04db8517 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/hooks/use-import-workflow.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/hooks/use-import-workflow.ts @@ -52,9 +52,8 @@ export function useImportWorkflow({ workspaceId }: UseImportWorkflowProps) { const workflowName = extractWorkflowName(content, filename) clearDiff() - const parsedContent = JSON.parse(content) const workflowColor = - parsedContent.state?.metadata?.color || parsedContent.metadata?.color || '#3972F6' + (workflowData.metadata as { color?: string } | undefined)?.color || '#3972F6' const result = await createWorkflowMutation.mutateAsync({ name: workflowName, @@ -62,23 +61,20 @@ export function useImportWorkflow({ workspaceId }: UseImportWorkflowProps) { workspaceId, folderId: folderId || undefined, sortOrder, + color: workflowColor, }) const newWorkflowId = result.id - if (workflowColor !== '#3972F6') { - await fetch(`/api/workflows/${newWorkflowId}`, { - method: 'PATCH', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ color: workflowColor }), - }) - } - - await fetch(`/api/workflows/${newWorkflowId}/state`, { + const stateResponse = await fetch(`/api/workflows/${newWorkflowId}/state`, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(workflowData), }) + if (!stateResponse.ok) { + logger.error(`Failed to save workflow state for ${newWorkflowId}`) + } + if (workflowData.variables) { const variablesArray = Array.isArray(workflowData.variables) ? workflowData.variables @@ -101,11 +97,15 @@ export function useImportWorkflow({ workspaceId }: UseImportWorkflowProps) { } } - await fetch(`/api/workflows/${newWorkflowId}/variables`, { + const variablesResponse = await fetch(`/api/workflows/${newWorkflowId}/variables`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ variables: variablesRecord }), }) + + if (!variablesResponse.ok) { + logger.error(`Failed to save variables for ${newWorkflowId}`) + } } } diff --git a/apps/sim/app/workspace/[workspaceId]/w/hooks/use-import-workspace.ts b/apps/sim/app/workspace/[workspaceId]/w/hooks/use-import-workspace.ts index 87d2e793a..06d0cfa20 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/hooks/use-import-workspace.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/hooks/use-import-workspace.ts @@ -160,9 +160,8 @@ export function useImportWorkspace({ onSuccess }: UseImportWorkspaceProps = {}) const workflowName = extractWorkflowName(workflow.content, workflow.name) clearDiff() - const parsedContent = JSON.parse(workflow.content) const workflowColor = - parsedContent.state?.metadata?.color || parsedContent.metadata?.color || '#3972F6' + (workflowData.metadata as { color?: string } | undefined)?.color || '#3972F6' const createWorkflowResponse = await fetch('/api/workflows', { method: 'POST', @@ -216,11 +215,18 @@ export function useImportWorkspace({ onSuccess }: UseImportWorkspaceProps = {}) } } - await fetch(`/api/workflows/${newWorkflow.id}/variables`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ variables: variablesRecord }), - }) + const variablesResponse = await fetch( + `/api/workflows/${newWorkflow.id}/variables`, + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ variables: variablesRecord }), + } + ) + + if (!variablesResponse.ok) { + logger.error(`Failed to save variables for ${newWorkflow.id}`) + } } }