From 94ce9fbc09ef04c06c0c3160fc218c9a3cba8be1 Mon Sep 17 00:00:00 2001 From: Delirium Date: Mon, 18 Mar 2024 13:17:34 +0100 Subject: [PATCH] fix(ui): fix mapper from intelligent search (#1971) * fix(ui): fix mapper from intelligent search * fix typo --- frontend/app/mstore/aiFiltersStore.ts | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/frontend/app/mstore/aiFiltersStore.ts b/frontend/app/mstore/aiFiltersStore.ts index 59c8e851e..18fb46595 100644 --- a/frontend/app/mstore/aiFiltersStore.ts +++ b/frontend/app/mstore/aiFiltersStore.ts @@ -94,24 +94,19 @@ export function isObject(item: any): boolean { return item && typeof item === 'object' && !Array.isArray(item); } -export function mergeDeep(target: Record, ...sources: any[]): Record { - if (!sources.length) return target; - const source = sources.shift(); +const updateFilters = (defaultFilters: typeof defaultFetchFilter['filters'], backendFilters: Record): typeof defaultFetchFilter['filters'] => { + const updatedFilters = [...defaultFilters]; // Clone the default filters - if (isObject(target) && isObject(source)) { - for (const key in source) { - if (isObject(source[key])) { - if (!target[key]) Object.assign(target, { [key]: {} }); - mergeDeep(target[key], source[key]); - } else { - Object.assign(target, { [key]: source[key] }); - } + backendFilters.forEach(backendFilter => { + const index = updatedFilters.findIndex(f => f.type === backendFilter.key); + if (index > -1) { + updatedFilters[index] = { ...updatedFilters[index], ...backendFilter, type: updatedFilters[index].type }; } - } + }); - return mergeDeep(target, ...sources); -} + return updatedFilters; +}; const mapFetch = (filter: Record): Record => { - return mergeDeep(filter, defaultFetchFilter); + return { ...defaultFetchFilter, filters: updateFilters(defaultFetchFilter.filters, filter.filters) } };