Skip to content

Commit 42f5fde

Browse files
committed
feat: nullable handling of settings and parameters
1 parent 1532f93 commit 42f5fde

1 file changed

Lines changed: 40 additions & 19 deletions

File tree

src/packages/ce/src/flow/services/Flow.service.ts

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {ReactiveArrayService, ReactiveArrayStore} from "@code0-tech/pictor";
22
import {
33
FlowInput,
44
FlowSetting,
5+
FlowType,
56
FunctionDefinition,
67
LiteralValue,
78
Maybe,
@@ -298,29 +299,48 @@ export class FlowService extends ReactiveArrayService<FlowView, FlowDependencies
298299
await this.syncFlow(flowId)
299300
}
300301

301-
async setSettingValue(flowId: FlowView['id'], parameterIndex: number, value: FlowSetting['value'], flowSettingsIdentifier: FlowSetting['flowSettingIdentifier']): Promise<void> {
302+
async setSettingValue(flowId: FlowView['id'], parameterIndex: number, value: FlowSetting['value'], flowType: FlowType): Promise<void> {
302303
const flow = this.getById(flowId)
303304
const index = this.values().findIndex(f => f.id === flowId)
304305
if (!flow) return
305306

306-
flow.editedAt = new Date().toISOString()
307+
if (!flow.settings) {
308+
flow.settings = {
309+
nodes: []
310+
}
311+
}
307312

308-
const setting: Maybe<FlowSetting> | undefined = flow.settings?.nodes?.[parameterIndex]
313+
if (!flow.settings.nodes) {
314+
flow.settings.nodes = []
315+
}
309316

310-
if (!setting) {
311-
const localSetting = {
312-
value: null,
313-
flowSettingsIdentifier: flowSettingsIdentifier
317+
flow.settings.nodes = flowType?.flowTypeSettings?.map((_, index) => {
318+
const flowSetting = flow.settings?.nodes?.[index]
319+
if (!flowSetting) {
320+
return {
321+
__typename: 'FlowSetting',
322+
value: null,
323+
}
314324
}
315-
localSetting.value = value
316-
if (flow.settings && flow.settings.nodes)
317-
flow.settings.nodes[parameterIndex] = localSetting
318-
else {
319-
flow.settings = {nodes: [localSetting]}
325+
326+
return flowSetting
327+
}) ?? []
328+
329+
const setting: Maybe<FlowSetting> | undefined = flow.settings?.nodes?.[parameterIndex]
330+
331+
if (!setting && flow.settings && flow.settings.nodes) {
332+
333+
const localParameter: FlowSetting = {
334+
value: null
320335
}
321-
} else {
322-
setting.flowSettingIdentifier = flowSettingsIdentifier
323-
setting.value = value
336+
337+
localParameter.value = value as FlowSetting['value']
338+
flow.editedAt = new Date().toISOString()
339+
flow.settings.nodes[parameterIndex] = (localParameter)
340+
341+
} else if (setting) {
342+
setting.value = value as FlowSetting['value']
343+
flow.editedAt = new Date().toISOString()
324344
}
325345

326346
this.set(index, new View(flow))
@@ -345,16 +365,17 @@ export class FlowService extends ReactiveArrayService<FlowView, FlowDependencies
345365
node.parameters.nodes = []
346366
}
347367

348-
functionDefinition?.parameterDefinitions?.nodes?.forEach((pD, index) => {
368+
node.parameters.nodes = functionDefinition?.parameterDefinitions?.nodes?.map((_, index) => {
349369
const nodeParameter = node.parameters?.nodes?.[index]
350370
if (!nodeParameter) {
351-
352-
node!.parameters!.nodes![parameterIndex] = {
371+
return {
353372
__typename: "NodeParameter",
354373
value: null,
355374
}
356375
}
357-
})
376+
377+
return nodeParameter
378+
}) ?? []
358379

359380
const parameter = node.parameters?.nodes?.[parameterIndex]
360381
if (!parameter && node.parameters && node.parameters.nodes) {

0 commit comments

Comments
 (0)