Browse Source

[frontend] Externalize and add types for Hue config related events

Johan Ahlen 4 năm trước cách đây
mục cha
commit
6608fb3aed

+ 5 - 4
desktop/core/src/desktop/js/apps/about/components/ko.connectorsConfig.js

@@ -16,11 +16,12 @@
 
 import * as ko from 'knockout';
 
+import { simpleGet, simplePost } from 'api/apiUtils';
+import { REFRESH_CONFIG_TOPIC } from 'config/events';
 import componentUtils from 'ko/components/componentUtils';
-import I18n from 'utils/i18n';
 import DisposableComponent from 'ko/components/DisposableComponent';
-import { simpleGet, simplePost } from 'api/apiUtils';
 import huePubSub from 'utils/huePubSub';
+import I18n from 'utils/i18n';
 
 export const NAME = 'connectors-config';
 
@@ -341,7 +342,7 @@ class ConnectorsConfig extends DisposableComponent {
         successCallback: data => {
           this.section('installed-connectors-page');
           this.fetchConnectors();
-          huePubSub.publish('cluster.config.refresh.config');
+          huePubSub.publish(REFRESH_CONFIG_TOPIC);
         }
       }
     );
@@ -358,7 +359,7 @@ class ConnectorsConfig extends DisposableComponent {
           connector.id = data.connector.id;
           this.section('installed-connectors-page');
           this.fetchConnectors();
-          huePubSub.publish('cluster.config.refresh.config');
+          huePubSub.publish(REFRESH_CONFIG_TOPIC);
         }
       }
     );

+ 4 - 8
desktop/core/src/desktop/js/apps/editor/EditorViewModel.js

@@ -28,12 +28,8 @@ import {
   ACTIVE_SNIPPET_CONNECTOR_CHANGED_EVENT,
   GET_ACTIVE_SNIPPET_CONNECTOR_EVENT
 } from 'apps/editor/events';
-import {
-  CONFIG_REFRESHED_EVENT,
-  GET_KNOWN_CONFIG_EVENT,
-  findEditorConnector,
-  getLastKnownConfig
-} from 'config/hueConfig';
+import { CONFIG_REFRESHED_TOPIC, GET_KNOWN_CONFIG_TOPIC } from 'config/events';
+import { findEditorConnector, getLastKnownConfig } from 'config/hueConfig';
 import { getFromLocalStorage, setInLocalStorage } from 'utils/storageUtils';
 
 export default class EditorViewModel {
@@ -71,8 +67,8 @@ export default class EditorViewModel {
         (this.config().hue_config.is_admin || this.config().hue_config.enable_sharing)
     );
 
-    huePubSub.publish(GET_KNOWN_CONFIG_EVENT, this.config);
-    huePubSub.subscribe(CONFIG_REFRESHED_EVENT, this.config);
+    huePubSub.publish(GET_KNOWN_CONFIG_TOPIC, this.config);
+    huePubSub.subscribe(CONFIG_REFRESHED_TOPIC, this.config);
 
     this.activeConnector = ko.pureComputed(() => {
       if (this.editorMode()) {

+ 3 - 2
desktop/core/src/desktop/js/apps/notebook/NotebookViewModel.js

@@ -29,7 +29,8 @@ import {
   ACTIVE_SNIPPET_CONNECTOR_CHANGED_EVENT,
   GET_ACTIVE_SNIPPET_CONNECTOR_EVENT
 } from 'apps/editor/events';
-import { CONFIG_REFRESHED_EVENT, findEditorConnector, getLastKnownConfig } from 'config/hueConfig';
+import { CONFIG_REFRESHED_TOPIC } from 'config/events';
+import { findEditorConnector, getLastKnownConfig } from 'config/hueConfig';
 import { getFromLocalStorage, setInLocalStorage } from 'utils/storageUtils';
 
 export default class NotebookViewModel {
@@ -68,7 +69,7 @@ export default class NotebookViewModel {
     };
 
     updateFromConfig(getLastKnownConfig());
-    huePubSub.subscribe(CONFIG_REFRESHED_EVENT, updateFromConfig);
+    huePubSub.subscribe(CONFIG_REFRESHED_TOPIC, updateFromConfig);
 
     self.editorType.subscribe(newVal => {
       if (!this.activeConnector() || this.activeConnector().id !== newVal) {

+ 3 - 3
desktop/core/src/desktop/js/apps/tableBrowser/app.js

@@ -22,7 +22,7 @@ import huePubSub from 'utils/huePubSub';
 import MetastoreViewModel from 'apps/tableBrowser/metastoreViewModel';
 import hueUtils from 'utils/hueUtils';
 import I18n from 'utils/i18n';
-import { GET_KNOWN_CONFIG_EVENT, CONFIG_REFRESHED_EVENT } from 'config/hueConfig';
+import { CONFIG_REFRESHED_TOPIC, GET_KNOWN_CONFIG_TOPIC } from 'config/events';
 
 import 'components/er-diagram/webcomp';
 
@@ -135,8 +135,8 @@ huePubSub.subscribe('app.dom.loaded', app => {
     viewModel.appConfig(config && config['app_config']);
   };
 
-  huePubSub.publish(GET_KNOWN_CONFIG_EVENT, configUpdated);
-  huePubSub.subscribe(CONFIG_REFRESHED_EVENT, configUpdated);
+  huePubSub.publish(GET_KNOWN_CONFIG_TOPIC, configUpdated);
+  huePubSub.subscribe(CONFIG_REFRESHED_TOPIC, configUpdated);
 
   if (hueUtils.getParameter('refresh') === 'true') {
     // TODO: Use connectors in the table browser

+ 3 - 2
desktop/core/src/desktop/js/apps/tableBrowser/metastoreViewModel.js

@@ -20,7 +20,8 @@ import * as ko from 'knockout';
 import * as propsMappers from './propsMappers';
 import MetastoreSource from 'apps/tableBrowser/metastoreSource';
 import dataCatalog from 'catalog/dataCatalog';
-import { findEditorConnector, GET_KNOWN_CONFIG_EVENT } from 'config/hueConfig';
+import { GET_KNOWN_CONFIG_TOPIC } from 'config/events';
+import { findEditorConnector } from 'config/hueConfig';
 import huePubSub from 'utils/huePubSub';
 import hueUtils from 'utils/hueUtils';
 import { getFromLocalStorage, withLocalStorage } from 'utils/storageUtils';
@@ -89,7 +90,7 @@ class MetastoreViewModel {
     this.loading = ko.pureComputed(() => !this.source() || this.source().loading());
 
     // TODO: Support dynamic config changes
-    huePubSub.publish(GET_KNOWN_CONFIG_EVENT, clusterConfig => {
+    huePubSub.publish(GET_KNOWN_CONFIG_TOPIC, clusterConfig => {
       const initialSourceType = options.sourceType || 'hive';
 
       if (clusterConfig && clusterConfig.app_config && clusterConfig.app_config.catalogs) {

+ 3 - 2
desktop/core/src/desktop/js/components/sidebar/HueSidebar.vue

@@ -53,7 +53,8 @@
   } from 'ko/components/assist/events';
   import { AppType, Connector, HueConfig, Namespace } from 'config/types';
   import { hueWindow } from 'types/types';
-  import { CONFIG_REFRESHED_EVENT, getLastKnownConfig } from 'config/hueConfig';
+  import { CONFIG_REFRESHED_TOPIC } from 'config/events';
+  import { getLastKnownConfig } from 'config/hueConfig';
   import huePubSub from 'utils/huePubSub';
   import { onHueLinkClick } from 'utils/hueUtils';
   import I18n from 'utils/i18n';
@@ -251,7 +252,7 @@
       if (config) {
         this.hueConfigUpdated(config);
       }
-      this.subTracker.subscribe(CONFIG_REFRESHED_EVENT, (refreshedConfig: HueConfig) => {
+      this.subTracker.subscribe(CONFIG_REFRESHED_TOPIC, (refreshedConfig: HueConfig) => {
         this.hueConfigUpdated(refreshedConfig);
       });
       this.subTracker.subscribe(

+ 8 - 0
desktop/core/src/desktop/js/config/events.ts

@@ -0,0 +1,8 @@
+import { HueConfig } from './types';
+
+export const REFRESH_CONFIG_TOPIC = 'cluster.config.refresh.config';
+export const CONFIG_REFRESHED_TOPIC = 'cluster.config.set.config';
+export type ConfigRefreshedEvent = HueConfig | undefined;
+
+export const GET_KNOWN_CONFIG_TOPIC = 'cluster.config.get.config';
+export type GetKnownConfigEvent = (appConfig?: HueConfig) => void;

+ 52 - 27
desktop/core/src/desktop/js/config/hueConfig.ts

@@ -15,30 +15,43 @@
 // limitations under the License.
 
 import { post } from 'api/utils';
+import {
+  CONFIG_REFRESHED_TOPIC,
+  ConfigRefreshedEvent,
+  GET_KNOWN_CONFIG_TOPIC,
+  GetKnownConfigEvent,
+  REFRESH_CONFIG_TOPIC
+} from './events';
 import {
   AppType,
   BrowserInterpreter,
   DashboardInterpreter,
   EditorInterpreter,
   HueConfig,
-  Interpreter
+  Interpreter,
+  SchedulerInterpreter
 } from './types';
 import huePubSub from 'utils/huePubSub';
 
-const FETCH_CONFIG_API = '/desktop/api2/get_config/';
+interface InterpreterMap {
+  [AppType.browser]: BrowserInterpreter;
+  [AppType.editor]: EditorInterpreter;
+  [AppType.dashboard]: DashboardInterpreter;
+  [AppType.scheduler]: SchedulerInterpreter;
+  [AppType.sdkapps]: Interpreter;
+}
 
-export const REFRESH_CONFIG_EVENT = 'cluster.config.refresh.config';
-export const CONFIG_REFRESHED_EVENT = 'cluster.config.set.config';
-export const GET_KNOWN_CONFIG_EVENT = 'cluster.config.get.config';
+type ConnectorTest<T extends keyof InterpreterMap> = (connector: InterpreterMap[T]) => boolean;
+
+const FETCH_CONFIG_API = '/desktop/api2/get_config/';
 
 let lastConfigPromise: Promise<HueConfig> | undefined;
 let lastKnownConfig: HueConfig | undefined;
 
-export const refreshConfig = async (hueBaseUrl?: string): Promise<HueConfig> => {
+export const refreshConfig = async (): Promise<HueConfig> => {
   lastConfigPromise = new Promise<HueConfig>(async (resolve, reject) => {
     try {
-      const url = hueBaseUrl ? hueBaseUrl + FETCH_CONFIG_API : FETCH_CONFIG_API;
-      const apiResponse = await post<HueConfig>(url, {}, { silenceErrors: true });
+      const apiResponse = await post<HueConfig>(FETCH_CONFIG_API, {}, { silenceErrors: true });
       if (apiResponse.status == 0) {
         lastKnownConfig = apiResponse;
         resolve(lastKnownConfig);
@@ -53,10 +66,10 @@ export const refreshConfig = async (hueBaseUrl?: string): Promise<HueConfig> =>
 
   lastConfigPromise
     .then(config => {
-      huePubSub.publish(CONFIG_REFRESHED_EVENT, config);
+      huePubSub.publish<ConfigRefreshedEvent>(CONFIG_REFRESHED_TOPIC, config);
     })
     .catch(() => {
-      huePubSub.publish(CONFIG_REFRESHED_EVENT);
+      huePubSub.publish<ConfigRefreshedEvent>(CONFIG_REFRESHED_TOPIC);
     });
 
   return lastConfigPromise;
@@ -64,7 +77,9 @@ export const refreshConfig = async (hueBaseUrl?: string): Promise<HueConfig> =>
 
 export const getLastKnownConfig = (): HueConfig | undefined => lastKnownConfig;
 
-const getInterpreters = (appType: AppType): Interpreter[] => {
+export const getConfig = async (): Promise<HueConfig> => getLastKnownConfig() || refreshConfig();
+
+const getInterpreters = <T extends keyof InterpreterMap>(appType: T): InterpreterMap[T][] => {
   if (!lastKnownConfig || !lastKnownConfig.app_config) {
     return [];
   }
@@ -77,28 +92,38 @@ const getInterpreters = (appType: AppType): Interpreter[] => {
     console.warn(`No interpreters configured for type ${appType}`);
     return [];
   }
-  return appConfig.interpreters;
+  return appConfig.interpreters as InterpreterMap[T][];
 };
 
+const findConnector = <T extends keyof InterpreterMap>(
+  appType: T,
+  connectorTest: ConnectorTest<T>
+): InterpreterMap[T] | undefined => getInterpreters(appType).find(connectorTest);
+
+const filterConnector = <T extends keyof InterpreterMap>(
+  appType: T,
+  connectorTest: ConnectorTest<T>
+): InterpreterMap[T][] => getInterpreters(appType).filter(connectorTest);
+
 export const findDashboardConnector = (
-  connectorTest: (connector: Interpreter) => boolean
-): DashboardInterpreter | undefined =>
-  (getInterpreters(AppType.dashboard) as DashboardInterpreter[]).find(connectorTest);
+  connectorTest: ConnectorTest<AppType.dashboard>
+): DashboardInterpreter | undefined => findConnector(AppType.dashboard, connectorTest);
 
 export const findBrowserConnector = (
-  connectorTest: (connector: Interpreter) => boolean
-): BrowserInterpreter | undefined =>
-  (getInterpreters(AppType.browser) as BrowserInterpreter[]).find(connectorTest);
+  connectorTest: ConnectorTest<AppType.browser>
+): BrowserInterpreter | undefined => findConnector(AppType.browser, connectorTest);
 
 export const findEditorConnector = (
-  connectorTest: (connector: Interpreter) => boolean
-): EditorInterpreter | undefined =>
-  (getInterpreters(AppType.editor) as EditorInterpreter[]).find(connectorTest);
+  connectorTest: ConnectorTest<AppType.editor>
+): EditorInterpreter | undefined => findConnector(AppType.editor, connectorTest);
+
+export const filterBrowserConnectors = (
+  connectorTest: ConnectorTest<AppType.browser>
+): BrowserInterpreter[] => filterConnector(AppType.browser, connectorTest);
 
 export const filterEditorConnectors = (
-  connectorTest: (connector: Interpreter) => boolean
-): EditorInterpreter[] | undefined =>
-  (getInterpreters(AppType.editor) as EditorInterpreter[]).filter(connectorTest);
+  connectorTest: ConnectorTest<AppType.editor>
+): EditorInterpreter[] => filterConnector(AppType.editor, connectorTest);
 
 const rootPathRegex = /.*%3A%2F%2F(.+)$/;
 
@@ -118,10 +143,10 @@ export const getRootFilePath = (connector: BrowserInterpreter): string => {
   return '';
 };
 
-huePubSub.subscribe(REFRESH_CONFIG_EVENT, refreshConfig);
+huePubSub.subscribe(REFRESH_CONFIG_TOPIC, refreshConfig);
 
-// TODO: Replace GET_KNOWN_CONFIG_EVENT pubSub with sync getKnownConfig const
-huePubSub.subscribe(GET_KNOWN_CONFIG_EVENT, (callback?: (appConfig: HueConfig) => void) => {
+// TODO: Replace GET_KNOWN_CONFIG_TOPIC pubSub with sync getKnownConfig const
+huePubSub.subscribe<GetKnownConfigEvent>(GET_KNOWN_CONFIG_TOPIC, (callback?) => {
   if (lastConfigPromise && callback) {
     lastConfigPromise.then(callback).catch(callback);
   }

+ 1 - 1
desktop/core/src/desktop/js/ko/components/assist/assistStorageEntry.js

@@ -19,7 +19,7 @@ import * as ko from 'knockout';
 
 import apiHelper from 'api/apiHelper';
 import huePubSub from 'utils/huePubSub';
-import { findBrowserConnector, GET_KNOWN_CONFIG_EVENT, getRootFilePath } from 'config/hueConfig';
+import { findBrowserConnector, getRootFilePath } from 'config/hueConfig';
 
 const PAGE_SIZE = 100;
 

+ 5 - 5
desktop/core/src/desktop/js/ko/components/assist/ko.assistDbPanel.js

@@ -31,15 +31,15 @@ import {
 } from './events';
 import { ASSIST_KEY_COMPONENT } from './ko.assistKey';
 import dataCatalog from 'catalog/dataCatalog';
-import AssistDbSource from 'ko/components/assist/assistDbSource';
-import componentUtils from 'ko/components/componentUtils';
-import huePubSub from 'utils/huePubSub';
+import { CONFIG_REFRESHED_TOPIC } from 'config/events';
 import {
-  CONFIG_REFRESHED_EVENT,
   filterEditorConnectors,
   findDashboardConnector,
   findEditorConnector
 } from 'config/hueConfig';
+import AssistDbSource from 'ko/components/assist/assistDbSource';
+import componentUtils from 'ko/components/componentUtils';
+import huePubSub from 'utils/huePubSub';
 import I18n from 'utils/i18n';
 import { getFromLocalStorage, setInLocalStorage } from 'utils/storageUtils';
 
@@ -865,7 +865,7 @@ class AssistDbPanel {
       this.sources(sources);
     };
 
-    huePubSub.subscribe(CONFIG_REFRESHED_EVENT, updateFromConfig);
+    huePubSub.subscribe(CONFIG_REFRESHED_TOPIC, updateFromConfig);
     updateFromConfig();
   }
 }

+ 3 - 2
desktop/core/src/desktop/js/ko/components/assist/ko.assistDocumentsPanel.js

@@ -21,7 +21,8 @@ import { ASSIST_DOC_HIGHLIGHT_EVENT, ASSIST_SHOW_DOC_EVENT } from './events';
 import { DOCUMENT_TYPES } from 'doc/docSupport';
 import HueFileEntry from 'doc/hueFileEntry';
 import componentUtils from 'ko/components/componentUtils';
-import { CONFIG_REFRESHED_EVENT, getLastKnownConfig } from 'config/hueConfig';
+import { CONFIG_REFRESHED_TOPIC } from 'config/events';
+import { getLastKnownConfig } from 'config/hueConfig';
 import huePubSub from 'utils/huePubSub';
 import I18n from 'utils/i18n';
 import { getFromLocalStorage, setInLocalStorage } from 'utils/storageUtils';
@@ -249,7 +250,7 @@ class AssistDocumentsPanel {
     };
 
     updateFromConfig(getLastKnownConfig());
-    huePubSub.subscribe(CONFIG_REFRESHED_EVENT, updateFromConfig);
+    huePubSub.subscribe(CONFIG_REFRESHED_TOPIC, updateFromConfig);
 
     self.highlightTypeFilter = ko.observable(false);
 

+ 3 - 2
desktop/core/src/desktop/js/ko/components/assist/ko.assistFunctionsPanel.js

@@ -16,6 +16,8 @@
 
 import * as ko from 'knockout';
 
+import { CONFIG_REFRESHED_TOPIC } from 'config/events';
+import { filterEditorConnectors } from 'config/hueConfig';
 import componentUtils from 'ko/components/componentUtils';
 import { HUE_DROP_DOWN_COMPONENT } from 'ko/components/ko.dropDown';
 import sqlReferenceRepository from 'sql/reference/sqlReferenceRepository';
@@ -25,7 +27,6 @@ import {
   getUdfCategories,
   UDF_DESCRIBED_EVENT
 } from 'sql/reference/sqlUdfRepository';
-import { CONFIG_REFRESHED_EVENT, filterEditorConnectors } from 'config/hueConfig';
 import huePubSub from 'utils/huePubSub';
 import I18n from 'utils/i18n';
 import { getFromLocalStorage, setInLocalStorage } from 'utils/storageUtils';
@@ -322,7 +323,7 @@ class AssistFunctionsPanel {
     };
 
     configUpdated();
-    huePubSub.subscribe(CONFIG_REFRESHED_EVENT, configUpdated);
+    huePubSub.subscribe(CONFIG_REFRESHED_TOPIC, configUpdated);
   }
 }
 

+ 5 - 4
desktop/core/src/desktop/js/ko/components/assist/ko.assistLangRefPanel.js

@@ -17,12 +17,13 @@
 import $ from 'jquery';
 import * as ko from 'knockout';
 
+import { ASSIST_LANG_REF_PANEL_SHOW_TOPIC_EVENT } from './events';
+import { simpleGet } from 'api/apiUtils';
+import { CONFIG_REFRESHED_TOPIC } from 'config/events';
+import { filterEditorConnectors } from 'config/hueConfig';
 import componentUtils from 'ko/components/componentUtils';
 import huePubSub from 'utils/huePubSub';
 import I18n from 'utils/i18n';
-import { CONFIG_REFRESHED_EVENT, filterEditorConnectors } from 'config/hueConfig';
-import { simpleGet } from 'api/apiUtils';
-import { ASSIST_LANG_REF_PANEL_SHOW_TOPIC_EVENT } from './events';
 
 export const NAME = 'assist-language-reference-panel';
 
@@ -177,7 +178,7 @@ class AssistLangRefPanel {
     };
 
     configUpdated();
-    huePubSub.subscribe(CONFIG_REFRESHED_EVENT, configUpdated);
+    huePubSub.subscribe(CONFIG_REFRESHED_TOPIC, configUpdated);
 
     if (this.connector()) {
       updateDialect(this.connector().dialect);

+ 6 - 6
desktop/core/src/desktop/js/ko/components/assist/ko.assistPanel.js

@@ -17,17 +17,17 @@
 import $ from 'jquery';
 import * as ko from 'knockout';
 
-import AssistInnerPanel from 'ko/components/assist/assistInnerPanel';
-import componentUtils from 'ko/components/componentUtils';
-import huePubSub from 'utils/huePubSub';
-import I18n from 'utils/i18n';
-import { GET_KNOWN_CONFIG_EVENT, CONFIG_REFRESHED_EVENT } from 'config/hueConfig';
 import {
   ASSIST_SHOW_DOC_EVENT,
   ASSIST_SHOW_SOLR_EVENT,
   ASSIST_SHOW_SQL_EVENT,
   SHOW_LEFT_ASSIST_EVENT
 } from './events';
+import { GET_KNOWN_CONFIG_TOPIC } from 'config/events';
+import AssistInnerPanel from 'ko/components/assist/assistInnerPanel';
+import componentUtils from 'ko/components/componentUtils';
+import huePubSub from 'utils/huePubSub';
+import I18n from 'utils/i18n';
 import { withLocalStorage } from 'utils/storageUtils';
 
 const TEMPLATE = `
@@ -93,7 +93,7 @@ class AssistPanel {
     withLocalStorage('assist.last.open.panel', self.lastOpenPanelType);
 
     // TODO: Support dynamic config changes
-    huePubSub.publish(GET_KNOWN_CONFIG_EVENT, clusterConfig => {
+    huePubSub.publish(GET_KNOWN_CONFIG_TOPIC, clusterConfig => {
       if (clusterConfig && clusterConfig['app_config']) {
         const panels = [];
         const appConfig = clusterConfig['app_config'];

+ 3 - 2
desktop/core/src/desktop/js/ko/components/contextPopover/ko.contextPopover.js

@@ -30,9 +30,10 @@ import ResizeHelper from './resizeHelper';
 import StorageContext from './storageContext';
 import contextCatalog from 'catalog/contextCatalog';
 import dataCatalog from 'catalog/dataCatalog';
+import { GET_KNOWN_CONFIG_TOPIC } from 'config/events';
+import { findEditorConnector } from 'config/hueConfig';
 import { ASSIST_KEY_COMPONENT } from 'ko/components/assist/ko.assistKey';
 import componentUtils from 'ko/components/componentUtils';
-import { findEditorConnector, GET_KNOWN_CONFIG_EVENT } from 'config/hueConfig';
 import huePubSub from 'utils/huePubSub';
 import I18n from 'utils/i18n';
 import { getFromLocalStorage } from 'utils/storageUtils';
@@ -913,7 +914,7 @@ class SqlContextContentsGlobalSearch {
     let connectorId = params.data.sourceType && params.data.sourceType.toLowerCase();
 
     if (!connectorId || connectorId === 'hive') {
-      huePubSub.publish(GET_KNOWN_CONFIG_EVENT, clusterConfig => {
+      huePubSub.publish(GET_KNOWN_CONFIG_TOPIC, clusterConfig => {
         if (clusterConfig) {
           const defaultEditor = clusterConfig['default_sql_interpreter'];
           if (!connectorId || (connectorId === 'hive' && defaultEditor === 'impala')) {

+ 5 - 4
desktop/core/src/desktop/js/ko/components/contextPopover/ko.quickQueryContext.js

@@ -23,12 +23,13 @@ import { SIMPLE_RESULT_GRID_COMPONENT } from 'apps/editor/components/resultGrid/
 
 import 'apps/editor/components/ExecutableActionsKoBridge.vue';
 
-import componentUtils from 'ko/components/componentUtils';
-import DisposableComponent from 'ko/components/DisposableComponent';
 import Executor from 'apps/editor/execution/executor';
 import SqlExecutable from 'apps/editor/execution/sqlExecutable';
+import { CONFIG_REFRESHED_TOPIC } from 'config/events';
+import { filterEditorConnectors } from 'config/hueConfig';
+import componentUtils from 'ko/components/componentUtils';
+import DisposableComponent from 'ko/components/DisposableComponent';
 import sqlStatementsParser from 'parse/sqlStatementsParser';
-import { CONFIG_REFRESHED_EVENT, filterEditorConnectors } from 'config/hueConfig';
 
 export const NAME = 'quick-query-context';
 
@@ -136,7 +137,7 @@ class QuickQueryContext extends DisposableComponent {
     );
 
     this.updateFromConfig();
-    this.subscribe(CONFIG_REFRESHED_EVENT, this.updateFromConfig.bind(this));
+    this.subscribe(CONFIG_REFRESHED_TOPIC, this.updateFromConfig.bind(this));
 
     let refreshExecutableThrottle = -1;
     const refreshExecutable = () => {

+ 3 - 3
desktop/core/src/desktop/js/onePageViewModel.js

@@ -19,10 +19,10 @@ import _ from 'lodash';
 import * as ko from 'knockout';
 import page from 'page';
 
+import { CONFIG_REFRESHED_TOPIC, GET_KNOWN_CONFIG_TOPIC } from 'config/events';
 import hueUtils from 'utils/hueUtils';
 import huePubSub from 'utils/huePubSub';
 import I18n from 'utils/i18n';
-import { CONFIG_REFRESHED_EVENT, GET_KNOWN_CONFIG_EVENT } from 'config/hueConfig';
 
 class OnePageViewModel {
   constructor() {
@@ -820,8 +820,8 @@ class OnePageViewModel {
       page();
     };
 
-    huePubSub.publish(GET_KNOWN_CONFIG_EVENT, configUpdated);
-    huePubSub.subscribe(CONFIG_REFRESHED_EVENT, configUpdated);
+    huePubSub.publish(GET_KNOWN_CONFIG_TOPIC, configUpdated);
+    huePubSub.subscribe(CONFIG_REFRESHED_TOPIC, configUpdated);
 
     huePubSub.subscribe('open.link', href => {
       if (href) {

+ 8 - 8
desktop/core/src/desktop/js/topNavViewModel.js

@@ -18,11 +18,11 @@ import * as ko from 'knockout';
 
 import huePubSub from 'utils/huePubSub';
 import {
-  CONFIG_REFRESHED_EVENT,
-  findEditorConnector,
-  GET_KNOWN_CONFIG_EVENT,
-  REFRESH_CONFIG_EVENT
-} from 'config/hueConfig';
+  CONFIG_REFRESHED_TOPIC,
+  GET_KNOWN_CONFIG_TOPIC,
+  REFRESH_CONFIG_TOPIC
+} from 'config/events';
+import { findEditorConnector } from 'config/hueConfig';
 import { withLocalStorage } from 'utils/storageUtils';
 
 class TopNavViewModel {
@@ -54,11 +54,11 @@ class TopNavViewModel {
       );
     };
 
-    huePubSub.publish(GET_KNOWN_CONFIG_EVENT, configUpdated);
-    huePubSub.subscribe(CONFIG_REFRESHED_EVENT, configUpdated);
+    huePubSub.publish(GET_KNOWN_CONFIG_TOPIC, configUpdated);
+    huePubSub.subscribe(CONFIG_REFRESHED_TOPIC, configUpdated);
 
     huePubSub.subscribe('hue.new.default.app', () => {
-      huePubSub.publish(REFRESH_CONFIG_EVENT);
+      huePubSub.publish(REFRESH_CONFIG_TOPIC);
     });
   }
 }

+ 1 - 1
tools/examples/components/sql-scratchpad/src/components/SqlScratchpad.tsx

@@ -36,7 +36,7 @@ export class SqlScratchpad extends React.Component<{}, SqlScratchpadState> {
   componentDidMount() {
     console.info('Refreshing config');
 
-    hueConfig.refreshConfig(HUE_BASE_URL).then(() => {
+    hueConfig.refreshConfig().then(() => {
       const connector = hueConfig.findEditorConnector(() => true); // Returns the first connector
 
       this.setState({