You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by mi...@apache.org on 2023/03/31 17:19:13 UTC
[superset] branch master updated: fix: Removes Redux state mutations - iteration 1 (#23522)
This is an automated email from the ASF dual-hosted git repository.
michaelsmolina pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 1ced7cdbbb fix: Removes Redux state mutations - iteration 1 (#23522)
1ced7cdbbb is described below
commit 1ced7cdbbb65c6dc9c77a4ba2efaba5d56a00953
Author: Michael S. Molina <70...@users.noreply.github.com>
AuthorDate: Fri Mar 31 14:19:02 2023 -0300
fix: Removes Redux state mutations - iteration 1 (#23522)
---
superset-frontend/src/components/Chart/chartReducer.ts | 4 ++--
superset-frontend/src/dashboard/util/crossFilters.ts | 5 +++--
.../src/dashboard/util/updateComponentParentsList.js | 15 +++++++++------
3 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/superset-frontend/src/components/Chart/chartReducer.ts b/superset-frontend/src/components/Chart/chartReducer.ts
index 1d1ae60ea6..d91d77c49a 100644
--- a/superset-frontend/src/components/Chart/chartReducer.ts
+++ b/superset-frontend/src/components/Chart/chartReducer.ts
@@ -18,6 +18,7 @@
*/
/* eslint camelcase: 0 */
import { t } from '@superset-ui/core';
+import { omit } from 'lodash';
import { HYDRATE_DASHBOARD } from 'src/dashboard/actions/hydrate';
import { DatasourcesAction } from 'src/dashboard/actions/datasources';
import { ChartState } from 'src/explore/types';
@@ -180,8 +181,7 @@ export default function chartReducer(
/* eslint-disable no-param-reassign */
if (action.type === actions.REMOVE_CHART) {
- delete charts[action.key];
- return charts;
+ return omit(charts, [action.key]);
}
if (action.type === actions.UPDATE_CHART_ID) {
const { newId, key } = action;
diff --git a/superset-frontend/src/dashboard/util/crossFilters.ts b/superset-frontend/src/dashboard/util/crossFilters.ts
index 862db89798..c166c10fbf 100644
--- a/superset-frontend/src/dashboard/util/crossFilters.ts
+++ b/superset-frontend/src/dashboard/util/crossFilters.ts
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-
+import { cloneDeep } from 'lodash';
import {
Behavior,
FeatureFlag,
@@ -60,7 +60,8 @@ export const getCrossFiltersConfiguration = (
if (behaviors.includes(Behavior.INTERACTIVE_CHART)) {
if (initialConfig[chartId]) {
- chartConfiguration[chartId] = initialConfig[chartId];
+ // We need to clone to avoid mutating Redux state
+ chartConfiguration[chartId] = cloneDeep(initialConfig[chartId]);
}
if (!chartConfiguration[chartId]) {
chartConfiguration[chartId] = {
diff --git a/superset-frontend/src/dashboard/util/updateComponentParentsList.js b/superset-frontend/src/dashboard/util/updateComponentParentsList.js
index 44e6c24a19..5a3d7d78f6 100644
--- a/superset-frontend/src/dashboard/util/updateComponentParentsList.js
+++ b/superset-frontend/src/dashboard/util/updateComponentParentsList.js
@@ -1,5 +1,3 @@
-import { logging } from '@superset-ui/core';
-
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -18,6 +16,8 @@ import { logging } from '@superset-ui/core';
* specific language governing permissions and limitations
* under the License.
*/
+import { logging } from '@superset-ui/core';
+
export default function updateComponentParentsList({
currentComponent,
layout = {},
@@ -32,11 +32,14 @@ export default function updateComponentParentsList({
if (Array.isArray(currentComponent.children)) {
currentComponent.children.forEach(childId => {
- const child = layout[childId];
- if (child) {
- child.parents = parentsList; // eslint-disable-line no-param-reassign
+ if (layout[childId]) {
+ // eslint-disable-next-line no-param-reassign
+ layout[childId] = {
+ ...layout[childId],
+ parents: parentsList,
+ };
updateComponentParentsList({
- currentComponent: child,
+ currentComponent: layout[childId],
layout,
});
} else {