@@ -2,6 +2,7 @@ import {ReactiveArrayService, ReactiveArrayStore} from "@code0-tech/pictor";
22import {
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