From 262c09bd120fa81fbae2ecfcdb72bbffaff74d0a Mon Sep 17 00:00:00 2001 From: Ivan Nejezchleb Date: Fri, 21 Jun 2024 10:07:03 +0200 Subject: [PATCH] fix: remove non-serializable value from payload JIRA: LX-323 risk: low --- .../loadCustomElementsReducers.ts | 7 +- .../loadCustomElementsSaga.ts | 9 ++- .../loadInitialElementsPageReducers.ts | 9 ++- .../loadInitialElementsPageSaga.ts | 9 ++- .../loadNextElementsPageReducers.ts | 9 ++- .../loadNextElementsPageSaga.ts | 9 ++- .../loadCustomElements.test.ts.snap | 67 +------------------ .../loadInitialElementsPage.test.ts.snap | 67 +------------------ .../loadNextElementsPage.test.ts.snap | 67 +------------------ 9 files changed, 38 insertions(+), 215 deletions(-) diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadCustomElements/loadCustomElementsReducers.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadCustomElements/loadCustomElementsReducers.ts index 668723ee013..ba1ecc31734 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadCustomElements/loadCustomElementsReducers.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadCustomElements/loadCustomElementsReducers.ts @@ -6,7 +6,6 @@ import { GoodDataSdkError } from "@gooddata/sdk-ui"; import { Correlation, ILoadElementsOptions, ILoadElementsResult } from "../../../types/index.js"; import { AttributeFilterReducer } from "../store/state.js"; import { getElementCacheKey } from "../common/selectors.js"; -import { AttributeFilterHandlerStoreContext } from "../store/types.js"; const loadCustomElementsRequest: AttributeFilterReducer< PayloadAction<{ options: ILoadElementsOptions; correlation: Correlation | undefined }> @@ -20,16 +19,16 @@ const loadCustomElementsSuccess: AttributeFilterReducer< PayloadAction< ILoadElementsResult & { correlation?: Correlation; - context: AttributeFilterHandlerStoreContext; + enableDuplicatedLabelValuesInAttributeFilter: boolean; } > > = (state, action) => { const keys = []; - const { context } = action.payload; + const { enableDuplicatedLabelValuesInAttributeFilter } = action.payload; action.payload.elements.forEach((el) => { - const cacheKey = getElementCacheKey(state, el, context.enableDuplicatedLabelValuesInAttributeFilter); + const cacheKey = getElementCacheKey(state, el, enableDuplicatedLabelValuesInAttributeFilter); if (!state.elements.cache[cacheKey]) { state.elements.cache[cacheKey] = el; } diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadCustomElements/loadCustomElementsSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadCustomElements/loadCustomElementsSaga.ts index d42f78740d3..7ca0f5aefdb 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadCustomElements/loadCustomElementsSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadCustomElements/loadCustomElementsSaga.ts @@ -54,7 +54,14 @@ export function* loadCustomElementsSaga( }); if (result) { - yield put(actions.loadCustomElementsSuccess({ ...result, correlation, context })); + yield put( + actions.loadCustomElementsSuccess({ + ...result, + correlation, + enableDuplicatedLabelValuesInAttributeFilter: + context.enableDuplicatedLabelValuesInAttributeFilter, + }), + ); return result; } else if (canceled || anotherRequest) { yield put(actions.loadCustomElementsCancel({ correlation })); diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageReducers.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageReducers.ts index 4cea90a5563..25f183b1647 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageReducers.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageReducers.ts @@ -6,7 +6,6 @@ import identity from "lodash/identity.js"; import { Correlation, ILoadElementsResult } from "../../../types/index.js"; import { getElementCacheKey } from "../common/selectors.js"; import { AttributeFilterReducer } from "../store/state.js"; -import { AttributeFilterHandlerStoreContext } from "../store/types.js"; const loadInitialElementsPageRequest: AttributeFilterReducer> = identity; @@ -25,21 +24,21 @@ const loadInitialElementsPageSuccess: AttributeFilterReducer< PayloadAction< ILoadElementsResult & { correlation: Correlation; - context: AttributeFilterHandlerStoreContext; + enableDuplicatedLabelValuesInAttributeFilter: boolean; } > > = (state, action) => { - const { context } = action.payload; + const { enableDuplicatedLabelValuesInAttributeFilter } = action.payload; state.elements.initialPageLoad.status = "success"; state.elements.totalCountWithCurrentSettings = action.payload.totalCount; action.payload.elements.forEach((el) => { - const cacheKey = getElementCacheKey(state, el, context.enableDuplicatedLabelValuesInAttributeFilter); + const cacheKey = getElementCacheKey(state, el, enableDuplicatedLabelValuesInAttributeFilter); if (!state.elements.cache[cacheKey]) { state.elements.cache[cacheKey] = el; } }); state.elements.data = action.payload.elements.map((el) => - getElementCacheKey(state, el, context.enableDuplicatedLabelValuesInAttributeFilter), + getElementCacheKey(state, el, enableDuplicatedLabelValuesInAttributeFilter), ); state.elements.lastLoadedOptions = action.payload.options; }; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageSaga.ts index 979f2e87c34..90e601de8b2 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageSaga.ts @@ -73,7 +73,14 @@ export function* loadInitialElementsPageSaga( actions.setLimitingAttributeFiltersAttributes({ attributes: limitingAttributeFiltersAttributes }), ); yield put(actions.setCacheId({ cacheId: result.cacheId })); - yield put(actions.loadInitialElementsPageSuccess({ ...result, correlation, context })); + yield put( + actions.loadInitialElementsPageSuccess({ + ...result, + correlation, + enableDuplicatedLabelValuesInAttributeFilter: + context.enableDuplicatedLabelValuesInAttributeFilter, + }), + ); } catch (error) { yield put( actions.loadInitialElementsPageError({ diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageReducers.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageReducers.ts index 83ada2f8349..a86cd78f05c 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageReducers.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageReducers.ts @@ -6,7 +6,6 @@ import identity from "lodash/identity.js"; import { Correlation, ILoadElementsResult } from "../../../types/index.js"; import { getElementCacheKey } from "../common/selectors.js"; import { AttributeFilterReducer } from "../store/state.js"; -import { AttributeFilterHandlerStoreContext } from "../store/types.js"; const loadNextElementsPageRequest: AttributeFilterReducer> = identity; @@ -22,21 +21,21 @@ const loadNextElementsPageSuccess: AttributeFilterReducer< PayloadAction< ILoadElementsResult & { correlation: Correlation; - context: AttributeFilterHandlerStoreContext; + enableDuplicatedLabelValuesInAttributeFilter: boolean; } > > = (state, action) => { - const { context } = action.payload; + const { enableDuplicatedLabelValuesInAttributeFilter } = action.payload; state.elements.nextPageLoad.status = "success"; action.payload.elements.forEach((el) => { - const cacheKey = getElementCacheKey(state, el, context.enableDuplicatedLabelValuesInAttributeFilter); + const cacheKey = getElementCacheKey(state, el, enableDuplicatedLabelValuesInAttributeFilter); if (!state.elements.cache[cacheKey]) { state.elements.cache[cacheKey] = el; } }); state.elements.data = state.elements.data.concat( action.payload.elements.map((el) => - getElementCacheKey(state, el, context.enableDuplicatedLabelValuesInAttributeFilter), + getElementCacheKey(state, el, enableDuplicatedLabelValuesInAttributeFilter), ), ); state.elements.lastLoadedOptions = action.payload.options; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageSaga.ts index b101f2208f8..41e31c2e3c3 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageSaga.ts @@ -72,7 +72,14 @@ export function* loadNextElementsPageSaga( const result = yield call(elementsSaga, loadOptionsWithExcludePrimaryLabel, cacheId); - yield put(actions.loadNextElementsPageSuccess({ ...result, correlation, context })); + yield put( + actions.loadNextElementsPageSuccess({ + ...result, + correlation, + enableDuplicatedLabelValuesInAttributeFilter: + context.enableDuplicatedLabelValuesInAttributeFilter, + }), + ); } catch (error) { yield put( actions.loadNextElementsPageError({ diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/__snapshots__/loadCustomElements.test.ts.snap b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/__snapshots__/loadCustomElements.test.ts.snap index 9273909e832..3bad8852b22 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/__snapshots__/loadCustomElements.test.ts.snap +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/__snapshots__/loadCustomElements.test.ts.snap @@ -29,72 +29,6 @@ exports[`AttributeFilterHandler > loadCustomElements() that was successful shoul [ { "cacheId": undefined, - "context": { - "attributeFilter": { - "positiveAttributeFilter": { - "displayForm": { - "identifier": "label.f_product.product.name", - "type": "displayForm", - }, - "in": { - "uris": [ - "/gdc/md/referenceworkspace/obj/1054/elements?id=165678", - "/gdc/md/referenceworkspace/obj/1054/elements?id=165847", - ], - }, - }, - }, - "backend": { - "authenticate": [Function], - "capabilities": { - "allowsInconsistentRelations": false, - "canCalculateGrandTotals": true, - "canCalculateNativeTotals": true, - "canCalculateSubTotals": true, - "canCalculateTotals": true, - "supportsCsvUploader": true, - "supportsCustomColorPalettes": true, - "supportsElementUris": true, - "supportsElementsQueryParentFiltering": true, - "supportsEveryoneUserGroupForAccessControl": true, - "supportsHierarchicalWorkspaces": false, - "supportsKpiWidget": false, - "supportsOwners": true, - "supportsWidgetEntity": true, - }, - "config": { - "attributeElementsFiltering": { - "attributeFilters": { - "label.f_product.product.name": [Function], - }, - "dateFilters": { - "dt_snapshotdate_timestamp.day": [Function], - }, - "measures": { - "87a053b0-3947-49f3-b0c5-de53fd01f050": [Function], - }, - }, - }, - "currentUser": [Function], - "dataSources": [Function], - "deauthenticate": [Function], - "entitlements": [Function], - "isAuthenticated": [Function], - "onHostname": [Function], - "organization": [Function], - "organizations": [Function], - "withAuthentication": [Function], - "withTelemetry": [Function], - "workspace": [Function], - "workspaces": [Function], - }, - "displayAsLabel": undefined, - "enableDuplicatedLabelValuesInAttributeFilter": undefined, - "eventListener": [Function], - "hiddenElements": undefined, - "staticElements": undefined, - "workspace": "testWorkspace", - }, "correlation": "success", "elements": [ { @@ -126,6 +60,7 @@ exports[`AttributeFilterHandler > loadCustomElements() that was successful shoul "uri": "WonderKid", }, ], + "enableDuplicatedLabelValuesInAttributeFilter": undefined, "options": {}, "totalCount": 7, }, diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/__snapshots__/loadInitialElementsPage.test.ts.snap b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/__snapshots__/loadInitialElementsPage.test.ts.snap index f1a9d7dfaa3..1ee870a081c 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/__snapshots__/loadInitialElementsPage.test.ts.snap +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/__snapshots__/loadInitialElementsPage.test.ts.snap @@ -184,72 +184,6 @@ exports[`AttributeFilterHandler > loadInitialElementsPage() that was successful [ { "cacheId": undefined, - "context": { - "attributeFilter": { - "positiveAttributeFilter": { - "displayForm": { - "identifier": "label.f_product.product.name", - "type": "displayForm", - }, - "in": { - "uris": [ - "/gdc/md/referenceworkspace/obj/1054/elements?id=165678", - "/gdc/md/referenceworkspace/obj/1054/elements?id=165847", - ], - }, - }, - }, - "backend": { - "authenticate": [Function], - "capabilities": { - "allowsInconsistentRelations": false, - "canCalculateGrandTotals": true, - "canCalculateNativeTotals": true, - "canCalculateSubTotals": true, - "canCalculateTotals": true, - "supportsCsvUploader": true, - "supportsCustomColorPalettes": true, - "supportsElementUris": true, - "supportsElementsQueryParentFiltering": true, - "supportsEveryoneUserGroupForAccessControl": true, - "supportsHierarchicalWorkspaces": false, - "supportsKpiWidget": false, - "supportsOwners": true, - "supportsWidgetEntity": true, - }, - "config": { - "attributeElementsFiltering": { - "attributeFilters": { - "label.f_product.product.name": [Function], - }, - "dateFilters": { - "dt_snapshotdate_timestamp.day": [Function], - }, - "measures": { - "87a053b0-3947-49f3-b0c5-de53fd01f050": [Function], - }, - }, - }, - "currentUser": [Function], - "dataSources": [Function], - "deauthenticate": [Function], - "entitlements": [Function], - "isAuthenticated": [Function], - "onHostname": [Function], - "organization": [Function], - "organizations": [Function], - "withAuthentication": [Function], - "withTelemetry": [Function], - "workspace": [Function], - "workspaces": [Function], - }, - "displayAsLabel": undefined, - "enableDuplicatedLabelValuesInAttributeFilter": undefined, - "eventListener": [Function], - "hiddenElements": undefined, - "staticElements": undefined, - "workspace": "testWorkspace", - }, "correlation": "success", "elements": [ { @@ -281,6 +215,7 @@ exports[`AttributeFilterHandler > loadInitialElementsPage() that was successful "uri": "WonderKid", }, ], + "enableDuplicatedLabelValuesInAttributeFilter": undefined, "options": { "excludePrimaryLabel": false, "limit": 500, diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/__snapshots__/loadNextElementsPage.test.ts.snap b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/__snapshots__/loadNextElementsPage.test.ts.snap index e14894d3d19..0eceb173c2e 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/__snapshots__/loadNextElementsPage.test.ts.snap +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/__snapshots__/loadNextElementsPage.test.ts.snap @@ -69,72 +69,6 @@ exports[`AttributeFilterHandler > loadNextElementsPage() that was successful sho [ { "cacheId": undefined, - "context": { - "attributeFilter": { - "positiveAttributeFilter": { - "displayForm": { - "identifier": "label.f_product.product.name", - "type": "displayForm", - }, - "in": { - "uris": [ - "/gdc/md/referenceworkspace/obj/1054/elements?id=165678", - "/gdc/md/referenceworkspace/obj/1054/elements?id=165847", - ], - }, - }, - }, - "backend": { - "authenticate": [Function], - "capabilities": { - "allowsInconsistentRelations": false, - "canCalculateGrandTotals": true, - "canCalculateNativeTotals": true, - "canCalculateSubTotals": true, - "canCalculateTotals": true, - "supportsCsvUploader": true, - "supportsCustomColorPalettes": true, - "supportsElementUris": true, - "supportsElementsQueryParentFiltering": true, - "supportsEveryoneUserGroupForAccessControl": true, - "supportsHierarchicalWorkspaces": false, - "supportsKpiWidget": false, - "supportsOwners": true, - "supportsWidgetEntity": true, - }, - "config": { - "attributeElementsFiltering": { - "attributeFilters": { - "label.f_product.product.name": [Function], - }, - "dateFilters": { - "dt_snapshotdate_timestamp.day": [Function], - }, - "measures": { - "87a053b0-3947-49f3-b0c5-de53fd01f050": [Function], - }, - }, - }, - "currentUser": [Function], - "dataSources": [Function], - "deauthenticate": [Function], - "entitlements": [Function], - "isAuthenticated": [Function], - "onHostname": [Function], - "organization": [Function], - "organizations": [Function], - "withAuthentication": [Function], - "withTelemetry": [Function], - "workspace": [Function], - "workspaces": [Function], - }, - "displayAsLabel": undefined, - "enableDuplicatedLabelValuesInAttributeFilter": undefined, - "eventListener": [Function], - "hiddenElements": undefined, - "staticElements": undefined, - "workspace": "testWorkspace", - }, "correlation": "success", "elements": [ { @@ -146,6 +80,7 @@ exports[`AttributeFilterHandler > loadNextElementsPage() that was successful sho "uri": "Grammar Plus", }, ], + "enableDuplicatedLabelValuesInAttributeFilter": undefined, "options": { "excludePrimaryLabel": false, "limit": 2,