fix: Removes Redux state mutations - iteration 2 (#23535)

This commit is contained in:
Michael S. Molina 2023-04-05 13:49:32 -03:00 committed by GitHub
parent 117360cd57
commit 3cff2b0a58
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 4 deletions

View File

@ -25,6 +25,7 @@ import {
makeApi,
} from '@superset-ui/core';
import { Dispatch } from 'redux';
import { cloneDeep } from 'lodash';
import {
SET_DATA_MASK_FOR_FILTER_CONFIG_FAIL,
setDataMaskForFilterConfigComplete,
@ -189,7 +190,7 @@ export const setInScopeStatusOfFilters =
filterConfig: filtersWithScopes,
});
// need to update native_filter_configuration in the dashboard metadata
const { metadata } = getState().dashboardInfo;
const metadata = cloneDeep(getState().dashboardInfo.metadata);
const filterConfig: FilterConfiguration =
metadata.native_filter_configuration;
const mergedFilterConfig = filterConfig.map(filter => {
@ -394,6 +395,23 @@ export function unsetHoveredNativeFilter(): UnsetHoveredNativeFilter {
};
}
export const UPDATE_CASCADE_PARENT_IDS = 'UPDATE_CASCADE_PARENT_IDS';
export interface UpdateCascadeParentIds {
type: typeof UPDATE_CASCADE_PARENT_IDS;
id: string;
parentIds: string[];
}
export function updateCascadeParentIds(
id: string,
parentIds: string[],
): UpdateCascadeParentIds {
return {
type: UPDATE_CASCADE_PARENT_IDS,
id,
parentIds,
};
}
export type AnyFilterAction =
| SetFilterConfigBegin
| SetFilterConfigComplete
@ -415,4 +433,5 @@ export type AnyFilterAction =
| DeleteFilterSetFail
| UpdateFilterSetBegin
| UpdateFilterSetComplete
| UpdateFilterSetFail;
| UpdateFilterSetFail
| UpdateCascadeParentIds;

View File

@ -33,10 +33,12 @@ import {
SLOW_DEBOUNCE,
t,
} from '@superset-ui/core';
import { useDispatch } from 'react-redux';
import { AntdForm } from 'src/components';
import ErrorBoundary from 'src/components/ErrorBoundary';
import { StyledModal } from 'src/components/Modal';
import { testWithId } from 'src/utils/testUtils';
import { updateCascadeParentIds } from 'src/dashboard/actions/nativeFilters';
import { useFilterConfigMap, useFilterConfiguration } from '../state';
import FilterConfigurePane from './FilterConfigurePane';
import FiltersConfigForm, {
@ -116,6 +118,8 @@ function FiltersConfigModal({
onSave,
onCancel,
}: FiltersConfigModalProps) {
const dispatch = useDispatch();
const [form] = AntdForm.useForm<NativeFiltersForm>();
const configFormRef = useRef<any>();
@ -309,8 +313,11 @@ function FiltersConfigModal({
}
const { cascadeParentIds } = filter;
if (cascadeParentIds) {
filter.cascadeParentIds = cascadeParentIds.filter(id =>
canBeUsedAsDependency(id),
dispatch(
updateCascadeParentIds(
key,
cascadeParentIds.filter(id => canBeUsedAsDependency(id)),
),
);
}
});

View File

@ -25,6 +25,7 @@ import {
UNSET_FOCUSED_NATIVE_FILTER,
SET_HOVERED_NATIVE_FILTER,
UNSET_HOVERED_NATIVE_FILTER,
UPDATE_CASCADE_PARENT_IDS,
} from 'src/dashboard/actions/nativeFilters';
import {
FilterSet,
@ -116,6 +117,18 @@ export default function nativeFilterReducer(
...state,
hoveredFilterId: undefined,
};
case UPDATE_CASCADE_PARENT_IDS:
return {
...state,
filters: {
...state.filters,
[action.id]: {
...state.filters[action.id],
cascadeParentIds: action.parentIds,
},
},
};
// TODO handle SET_FILTER_CONFIG_FAIL action
default:
return state;