From 73a137bae289d3a249f2252b57eee11546aea779 Mon Sep 17 00:00:00 2001 From: Samuel Rowe Date: Mon, 1 Aug 2022 00:06:56 +0530 Subject: [PATCH] fix(frontend): fixed incorrect logic for extracting arrays/objects in forms --- services/frontend/src/utils/forms.ts | 61 ++++++++++++---------------- 1 file changed, 27 insertions(+), 34 deletions(-) diff --git a/services/frontend/src/utils/forms.ts b/services/frontend/src/utils/forms.ts index 26cd41d..9a56604 100644 --- a/services/frontend/src/utils/forms.ts +++ b/services/frontend/src/utils/forms.ts @@ -69,25 +69,40 @@ export type TTransformFunction = ( index: number ) => Record; -export const loadObjectOrArrayAsObject = ( - transform: TTransformFunction, - object?: any +export const extractObjectOrArray = ( + seperator: string, + keyName: string, + valueName: string, + object: any ): any => { if (!object) { return undefined; } if (Array.isArray(object)) { - return object.map(transform); + return object.map((item: string) => { + const [key, value] = splitKVPairs(item, seperator); + return { + [keyName]: key, + [valueName]: value + }; + }); } - return object; + return Object.entries(object).map(([key, value]) => { + return { + [keyName]: key, + [valueName]: value + }; + }); }; -export const loadArrayAsObject = ( - transform: TTransformFunction, - array?: string[] -) => { +export const extractArray = ( + seperator: string, + keyName: string, + valueName: string, + array: any +): any => { if (!array) { return undefined; } @@ -96,33 +111,11 @@ export const loadArrayAsObject = ( throw new Error("Malformed document. Expected an array at this point."); } - return array.map(transform); -}; - -export const extractObjectOrArray = ( - seperator: string, - keyName: string, - valueName: string, - object: any -): any => - loadObjectOrArrayAsObject((item: string) => { - const [key, value] = splitKVPairs(item, seperator); - return { - [keyName]: key, - [valueName]: value - }; - }, object); - -export const extractArray = ( - seperator: string, - keyName: string, - valueName: string, - object: any -): any => - loadArrayAsObject((item: string) => { + return array.map((item: string) => { const [key, value] = splitKVPairs(item, seperator); return { [keyName]: key, [valueName]: value }; - }, object); + }); +};