diff --git a/src/ScalarAuthClient.js b/src/ScalarAuthClient.js index 92f0ff6340..c67f49ba26 100644 --- a/src/ScalarAuthClient.js +++ b/src/ScalarAuthClient.js @@ -20,10 +20,10 @@ import SettingsStore from "./settings/SettingsStore"; import { Service, startTermsFlow, TermsNotSignedError } from './Terms'; const request = require('browser-request'); -const SdkConfig = require('./SdkConfig'); const MatrixClientPeg = require('./MatrixClientPeg'); import * as Matrix from 'matrix-js-sdk'; +import SdkConfig from "./SdkConfig"; // The version of the integration manager API we're intending to work with const imApiVersion = "1.1"; diff --git a/src/SdkConfig.js b/src/SdkConfig.ts similarity index 70% rename from src/SdkConfig.js rename to src/SdkConfig.ts index eb18dad453..8177a6c5b8 100644 --- a/src/SdkConfig.js +++ b/src/SdkConfig.ts @@ -1,5 +1,6 @@ /* Copyright 2016 OpenMarket Ltd +Copyright 2019 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,7 +15,11 @@ See the License for the specific language governing permissions and limitations under the License. */ -export const DEFAULTS = { +export interface ConfigOptions { + [key: string]: any; +} + +export const DEFAULTS: ConfigOptions = { // URL to a page we show in an iframe to configure integrations integrations_ui_url: "https://scalar.vector.im/", // Base URL to the REST interface of the integrations server @@ -23,30 +28,37 @@ export const DEFAULTS = { bug_report_endpoint_url: null, }; -class SdkConfig { - static get() { - return global.mxReactSdkConfig || {}; +export default class SdkConfig { + private static instance: ConfigOptions; + + private static setInstance(i: ConfigOptions) { + SdkConfig.instance = i; + + // For debugging purposes + (window).mxReactSdkConfig = i; } - static put(cfg) { + static get() { + return SdkConfig.instance || {}; + } + + static put(cfg: ConfigOptions) { const defaultKeys = Object.keys(DEFAULTS); for (let i = 0; i < defaultKeys.length; ++i) { if (cfg[defaultKeys[i]] === undefined) { cfg[defaultKeys[i]] = DEFAULTS[defaultKeys[i]]; } } - global.mxReactSdkConfig = cfg; + SdkConfig.setInstance(cfg); } static unset() { - global.mxReactSdkConfig = undefined; + SdkConfig.setInstance({}); } - static add(cfg) { + static add(cfg: ConfigOptions) { const liveConfig = SdkConfig.get(); const newConfig = Object.assign({}, liveConfig, cfg); SdkConfig.put(newConfig); } } - -module.exports = SdkConfig;