You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jo...@apache.org on 2023/03/14 18:55:39 UTC

[superset] branch master updated: fix(native-filters): Caching scope (#23314)

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

johnbodley 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 d2c1fb95ec fix(native-filters): Caching scope (#23314)
d2c1fb95ec is described below

commit d2c1fb95ec4df911abd1035c45f396df1665ba9b
Author: John Bodley <45...@users.noreply.github.com>
AuthorDate: Wed Mar 15 07:55:28 2023 +1300

    fix(native-filters): Caching scope (#23314)
---
 .../cypress/integration/dashboard/nativeFilters.test.ts  |  6 +++---
 .../FiltersConfigForm/ColumnSelect.tsx                   | 12 ++----------
 .../FiltersConfigForm/DatasetSelect.tsx                  | 13 ++-----------
 .../FiltersConfigForm/FiltersConfigForm.tsx              | 11 +----------
 .../FiltersConfigModal/FiltersConfigForm/utils.ts        | 16 +++++++++++++++-
 5 files changed, 23 insertions(+), 35 deletions(-)

diff --git a/superset-frontend/cypress-base/cypress/integration/dashboard/nativeFilters.test.ts b/superset-frontend/cypress-base/cypress/integration/dashboard/nativeFilters.test.ts
index 1e119ae775..3126b75625 100644
--- a/superset-frontend/cypress-base/cypress/integration/dashboard/nativeFilters.test.ts
+++ b/superset-frontend/cypress-base/cypress/integration/dashboard/nativeFilters.test.ts
@@ -576,7 +576,7 @@ describe('Native filters', () => {
         },
       );
       saveNativeFilterSettings([SAMPLE_CHART]);
-      enterNativeFilterEditModal();
+      enterNativeFilterEditModal(false);
       cy.get(nativeFilters.modal.tabsList.removeTab)
         .should('be.visible')
         .first()
@@ -812,7 +812,7 @@ describe('Native filters', () => {
         force: true,
       });
       cancelNativeFilterSettings();
-      enterNativeFilterEditModal();
+      enterNativeFilterEditModal(false);
       cy.get(nativeFilters.filtersList.removeIcon).first().click();
       cy.contains('You have removed this filter.').should('be.visible');
     });
@@ -855,7 +855,7 @@ describe('Native filters', () => {
         .contains(testItems.filterDefaultValue)
         .should('be.visible');
       validateFilterNameOnDashboard(testItems.topTenChart.filterColumn);
-      enterNativeFilterEditModal();
+      enterNativeFilterEditModal(false);
       deleteNativeFilter();
       saveNativeFilterSettings([SAMPLE_CHART]);
       cy.get(dataTestChartName(testItems.topTenChart.name)).within(() => {
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/ColumnSelect.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/ColumnSelect.tsx
index 758b9fd602..4fb2b21469 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/ColumnSelect.tsx
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/ColumnSelect.tsx
@@ -17,13 +17,13 @@
  * under the License.
  */
 import React, { useCallback, useState, useMemo, useEffect } from 'react';
-import { Column, ensureIsArray, SupersetClient, t } from '@superset-ui/core';
+import { Column, ensureIsArray, t } from '@superset-ui/core';
 import { useChangeEffect } from 'src/hooks/useChangeEffect';
 import { Select, FormInstance } from 'src/components';
 import { useToasts } from 'src/components/MessageToasts/withToasts';
 import { getClientErrorObject } from 'src/utils/getClientErrorObject';
-import { cacheWrapper } from 'src/utils/cacheWrapper';
 import { NativeFiltersForm } from '../types';
+import { cachedSupersetGet } from './utils';
 
 interface ColumnSelectProps {
   allowClear?: boolean;
@@ -37,14 +37,6 @@ interface ColumnSelectProps {
   mode?: 'multiple';
 }
 
-const localCache = new Map<string, any>();
-
-const cachedSupersetGet = cacheWrapper(
-  SupersetClient.get,
-  localCache,
-  ({ endpoint }) => endpoint || '',
-);
-
 /** Special purpose AsyncSelect that selects a column from a dataset */
 // eslint-disable-next-line import/prefer-default-export
 export function ColumnSelect({
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DatasetSelect.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DatasetSelect.tsx
index fa0b4fbea0..db1c6d4124 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DatasetSelect.tsx
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DatasetSelect.tsx
@@ -18,22 +18,13 @@
  */
 import React, { useCallback, useMemo } from 'react';
 import rison from 'rison';
-import { t, SupersetClient } from '@superset-ui/core';
+import { t } from '@superset-ui/core';
 import { AsyncSelect } from 'src/components';
-import { cacheWrapper } from 'src/utils/cacheWrapper';
 import {
   ClientErrorObject,
   getClientErrorObject,
 } from 'src/utils/getClientErrorObject';
-import { datasetToSelectOption } from './utils';
-
-const localCache = new Map<string, any>();
-
-const cachedSupersetGet = cacheWrapper(
-  SupersetClient.get,
-  localCache,
-  ({ endpoint }) => endpoint || '',
-);
+import { cachedSupersetGet, datasetToSelectOption } from './utils';
 
 interface DatasetSelectProps {
   onChange: (value: { label: string; value: number }) => void;
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx
index 4c18a2c85c..068e6300e8 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx
@@ -34,7 +34,6 @@ import {
   NativeFilterType,
   styled,
   SupersetApiError,
-  SupersetClient,
   t,
 } from '@superset-ui/core';
 import { isEqual } from 'lodash';
@@ -70,7 +69,6 @@ import DateFilterControl from 'src/explore/components/controls/DateFilterControl
 import AdhocFilterControl from 'src/explore/components/controls/FilterControl/AdhocFilterControl';
 import { FeatureFlag, isFeatureEnabled } from 'src/featureFlags';
 import { waitForAsyncData } from 'src/middleware/asyncEvent';
-import { cacheWrapper } from 'src/utils/cacheWrapper';
 import { ClientErrorObject } from 'src/utils/getClientErrorObject';
 import { SingleValueType } from 'src/filters/components/Range/SingleValueType';
 import {
@@ -91,6 +89,7 @@ import getControlItemsMap from './getControlItemsMap';
 import RemovedFilter from './RemovedFilter';
 import { useBackendFormUpdate, useDefaultValue } from './state';
 import {
+  cachedSupersetGet,
   FILTER_SUPPORTED_TYPES,
   hasTemporalColumns,
   mostUsedDataset,
@@ -322,14 +321,6 @@ const FILTER_TYPE_NAME_MAPPING = {
   [t('Group By')]: t('Group by'),
 };
 
-const localCache = new Map<string, any>();
-
-const cachedSupersetGet = cacheWrapper(
-  SupersetClient.get,
-  localCache,
-  ({ endpoint }) => endpoint || '',
-);
-
 /**
  * The configuration form for a specific filter.
  * Assigns field values to `filters[filterId]` in the form.
diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/utils.ts b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/utils.ts
index 77e27a4211..4344806591 100644
--- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/utils.ts
+++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/utils.ts
@@ -20,8 +20,14 @@ import { flatMapDeep } from 'lodash';
 import { FormInstance } from 'src/components';
 import React from 'react';
 import { CustomControlItem, Dataset } from '@superset-ui/chart-controls';
-import { Column, ensureIsArray, GenericDataType } from '@superset-ui/core';
+import {
+  Column,
+  ensureIsArray,
+  GenericDataType,
+  SupersetClient,
+} from '@superset-ui/core';
 import { DatasourcesState, ChartsState } from 'src/dashboard/types';
+import { cacheWrapper } from 'src/utils/cacheWrapper';
 
 const FILTERS_FIELD_NAME = 'filters';
 
@@ -130,3 +136,11 @@ export const mostUsedDataset = (
 
   return datasets[mostUsedDataset]?.id;
 };
+
+const localCache = new Map<string, any>();
+
+export const cachedSupersetGet = cacheWrapper(
+  SupersetClient.get,
+  localCache,
+  ({ endpoint }) => endpoint || '',
+);