From 5bd7e8a74505b62a14de6b01d3c8711aaae05a46 Mon Sep 17 00:00:00 2001 From: ryanbas21 Date: Fri, 11 Apr 2025 09:32:15 -0600 Subject: [PATCH] fix: handle-form-data-with-more-saftey It's not possible to receive responses from server that have no `formData` key. We should be defensive about how we handle this lookup. --- .changeset/long-islands-call.md | 5 +++++ packages/davinci-client/src/lib/node.reducer.test.ts | 4 +++- packages/davinci-client/src/lib/node.reducer.ts | 7 +++++-- 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 .changeset/long-islands-call.md diff --git a/.changeset/long-islands-call.md b/.changeset/long-islands-call.md new file mode 100644 index 0000000000..6483792751 --- /dev/null +++ b/.changeset/long-islands-call.md @@ -0,0 +1,5 @@ +--- +'@forgerock/davinci-client': patch +--- + +handle formData lookup with more saftey in case it is not in response diff --git a/packages/davinci-client/src/lib/node.reducer.test.ts b/packages/davinci-client/src/lib/node.reducer.test.ts index 68cc609035..fa45041de5 100644 --- a/packages/davinci-client/src/lib/node.reducer.test.ts +++ b/packages/davinci-client/src/lib/node.reducer.test.ts @@ -148,7 +148,9 @@ describe('The node collector reducer', () => { }, ], formData: { - username: 'This is the default data', + value: { + username: 'This is the default data', + }, }, }, }; diff --git a/packages/davinci-client/src/lib/node.reducer.ts b/packages/davinci-client/src/lib/node.reducer.ts index 64f5d07b97..39d4199f23 100644 --- a/packages/davinci-client/src/lib/node.reducer.ts +++ b/packages/davinci-client/src/lib/node.reducer.ts @@ -47,7 +47,7 @@ import { */ export const nextCollectorValues = createAction<{ fields: DaVinciField[]; - formData: Record; + formData: { value: Record }; }>('node/next'); export const updateCollectorValues = createAction<{ id: string; @@ -97,7 +97,10 @@ export const nodeCollectorReducer = createReducer(initialCollectorValues, (build } // *Some* collectors may have default or existing data to display - const data = action.payload.formData[field.key]; + const data = + action.payload.formData && + action.payload.formData.value && + action.payload.formData.value[field.key]; // Match specific collectors switch (field.type) {