From 7cadb62ffb276edece14266393a8a9f3b0345dfe Mon Sep 17 00:00:00 2001 From: simbiozizv Date: Thu, 30 May 2024 17:25:34 +0300 Subject: [PATCH] fix(Query): utf decode in result table [#533] --- .../src/ui/pages/query-tracker/module/api.ts | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/ui/src/ui/pages/query-tracker/module/api.ts b/packages/ui/src/ui/pages/query-tracker/module/api.ts index e96d4c887..2cd227cf3 100644 --- a/packages/ui/src/ui/pages/query-tracker/module/api.ts +++ b/packages/ui/src/ui/pages/query-tracker/module/api.ts @@ -160,6 +160,14 @@ export const CompletedStates = [ QueryStatus.FAILED, ]; +const secureDecoding = (value: string) => { + try { + return unipika.decode(value); + } catch (e) { + return value; + } +}; + const JSONParser = { JSONSerializer: { stringify(data: unknown) { @@ -167,13 +175,15 @@ const JSONParser = { }, parse(data: string) { return JSON.parse(data, (_, value) => { - if (typeof value === 'string') { - try { - return unipika.decode(value); - } catch (e) { - return value; - } + if (typeof value === 'object' && value !== null && !Array.isArray(value)) { + return Object.keys(value).reduce>((acc, k) => { + acc[secureDecoding(k)] = + typeof value[k] === 'string' ? secureDecoding(value[k]) : value[k]; + + return acc; + }, {}); } + return value; }); }, @@ -382,7 +392,7 @@ export function readQueryResults( }, }, }, - setup: getQTApiSetup(), + setup: {...getQTApiSetup(), ...JSONParser}, })) as QueryResult; return {...result, rows: mapQueryRowNames(result.rows)}; };