This is an automated email from the ASF dual-hosted git repository.

villebro pushed a commit to branch 1.3
in repository https://gitbox.apache.org/repos/asf/superset.git

commit ddc01a9b76afd4bf2ab67550c6b4ce11afe70d0d
Author: simcha90 <[email protected]>
AuthorDate: Wed Sep 29 13:50:21 2021 +0300

    fix: Clear native filters state (#16893)
    
    * fix:fix get permission function
    
    * fix: clear native filters state
    
    (cherry picked from commit 3d8cc15cba1d69e5d75b60405e4cf6282a7b5e0d)
---
 superset-frontend/src/dashboard/components/Dashboard.jsx |  2 ++
 superset-frontend/src/dashboard/containers/Dashboard.ts  |  2 ++
 superset-frontend/src/dataMask/actions.ts                | 12 ++++++++++++
 superset-frontend/src/dataMask/reducer.ts                |  3 +++
 4 files changed, 19 insertions(+)

diff --git a/superset-frontend/src/dashboard/components/Dashboard.jsx 
b/superset-frontend/src/dashboard/components/Dashboard.jsx
index 21bd809..12a33c2 100644
--- a/superset-frontend/src/dashboard/components/Dashboard.jsx
+++ b/superset-frontend/src/dashboard/components/Dashboard.jsx
@@ -50,6 +50,7 @@ const propTypes = {
     removeSliceFromDashboard: PropTypes.func.isRequired,
     triggerQuery: PropTypes.func.isRequired,
     logEvent: PropTypes.func.isRequired,
+    clearDataMaskState: PropTypes.func.isRequired,
   }).isRequired,
   dashboardInfo: dashboardInfoPropShape.isRequired,
   dashboardState: dashboardStatePropShape.isRequired,
@@ -193,6 +194,7 @@ class Dashboard extends React.PureComponent {
 
   componentWillUnmount() {
     window.removeEventListener('visibilitychange', this.onVisibilityChange);
+    this.props.actions.clearDataMaskState();
   }
 
   onVisibilityChange() {
diff --git a/superset-frontend/src/dashboard/containers/Dashboard.ts 
b/superset-frontend/src/dashboard/containers/Dashboard.ts
index ccca038..60db7b4 100644
--- a/superset-frontend/src/dashboard/containers/Dashboard.ts
+++ b/superset-frontend/src/dashboard/containers/Dashboard.ts
@@ -33,6 +33,7 @@ import {
   getAllActiveFilters,
   getRelevantDataMask,
 } from 'src/dashboard/util/activeAllDashboardFilters';
+import { clearDataMaskState } from '../../dataMask/actions';
 
 function mapStateToProps(state: RootState) {
   const {
@@ -83,6 +84,7 @@ function mapDispatchToProps(dispatch: Dispatch) {
     actions: bindActionCreators(
       {
         setDatasources,
+        clearDataMaskState,
         addSliceToDashboard,
         removeSliceFromDashboard,
         triggerQuery,
diff --git a/superset-frontend/src/dataMask/actions.ts 
b/superset-frontend/src/dataMask/actions.ts
index 1b7428f..495eaaa 100644
--- a/superset-frontend/src/dataMask/actions.ts
+++ b/superset-frontend/src/dataMask/actions.ts
@@ -22,6 +22,11 @@ import { FeatureFlag, isFeatureEnabled } from 
'../featureFlags';
 import { Filters } from '../dashboard/reducers/types';
 import { getInitialDataMask } from './reducer';
 
+export const CLEAR_DATA_MASK_STATE = 'CLEAR_DATA_MASK_STATE';
+export interface ClearDataMaskState {
+  type: typeof CLEAR_DATA_MASK_STATE;
+}
+
 export const UPDATE_DATA_MASK = 'UPDATE_DATA_MASK';
 export interface UpdateDataMask {
   type: typeof UPDATE_DATA_MASK;
@@ -81,7 +86,14 @@ export function clearDataMask(filterId: string | number) {
   );
 }
 
+export function clearDataMaskState(): ClearDataMaskState {
+  return {
+    type: CLEAR_DATA_MASK_STATE,
+  };
+}
+
 export type AnyDataMaskAction =
+  | ClearDataMaskState
   | UpdateDataMask
   | SetDataMaskForFilterConfigFail
   | SetDataMaskForFilterConfigComplete;
diff --git a/superset-frontend/src/dataMask/reducer.ts 
b/superset-frontend/src/dataMask/reducer.ts
index f5fd883..7184e53 100644
--- a/superset-frontend/src/dataMask/reducer.ts
+++ b/superset-frontend/src/dataMask/reducer.ts
@@ -29,6 +29,7 @@ import { URL_PARAMS } from 'src/constants';
 import { DataMaskStateWithId, DataMaskWithId } from './types';
 import {
   AnyDataMaskAction,
+  CLEAR_DATA_MASK_STATE,
   SET_DATA_MASK_FOR_FILTER_CONFIG_COMPLETE,
   UPDATE_DATA_MASK,
 } from './actions';
@@ -104,6 +105,8 @@ const dataMaskReducer = produce(
   (draft: DataMaskStateWithId, action: AnyDataMaskAction) => {
     const cleanState = {};
     switch (action.type) {
+      case CLEAR_DATA_MASK_STATE:
+        return cleanState;
       case UPDATE_DATA_MASK:
         draft[action.filterId] = {
           ...getInitialDataMask(action.filterId),

Reply via email to