Skip to content

Commit 1673ef9

Browse files
authored
fix(variables): fix variables block parsing error for json (#2675)
1 parent 356b473 commit 1673ef9

File tree

1 file changed

+23
-2
lines changed
  • apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/variables-input

1 file changed

+23
-2
lines changed

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/variables-input/variables-input.tsx

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,27 @@ const DEFAULT_ASSIGNMENT: Omit<VariableAssignment, 'id'> = {
3838
isExisting: false,
3939
}
4040

41+
/**
42+
* Parses a value that might be a JSON string or already an array of VariableAssignment.
43+
* This handles the case where workflows are imported with stringified values.
44+
*/
45+
function parseVariableAssignments(value: unknown): VariableAssignment[] {
46+
if (!value) return []
47+
if (Array.isArray(value)) return value as VariableAssignment[]
48+
if (typeof value === 'string') {
49+
const trimmed = value.trim()
50+
if (trimmed.startsWith('[') && trimmed.endsWith(']')) {
51+
try {
52+
const parsed = JSON.parse(trimmed)
53+
if (Array.isArray(parsed)) return parsed as VariableAssignment[]
54+
} catch {
55+
// Not valid JSON, return empty array
56+
}
57+
}
58+
}
59+
return []
60+
}
61+
4162
export function VariablesInput({
4263
blockId,
4364
subBlockId,
@@ -64,8 +85,8 @@ export function VariablesInput({
6485
(v: Variable) => v.workflowId === workflowId
6586
)
6687

67-
const value = isPreview ? previewValue : storeValue
68-
const assignments: VariableAssignment[] = value || []
88+
const rawValue = isPreview ? previewValue : storeValue
89+
const assignments: VariableAssignment[] = parseVariableAssignments(rawValue)
6990
const isReadOnly = isPreview || disabled
7091

7192
const getAvailableVariablesFor = (currentAssignmentId: string) => {

0 commit comments

Comments
 (0)