From b54376aa2acda9451d684a1565772503beaff631 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 7 Jun 2016 21:49:06 +0100 Subject: [PATCH] Add singleton object to hold SDK configuration --- src/SdkConfig.js | 45 +++++++++++++++++++++++++ src/components/structures/MatrixChat.js | 2 ++ 2 files changed, 47 insertions(+) create mode 100644 src/SdkConfig.js diff --git a/src/SdkConfig.js b/src/SdkConfig.js new file mode 100644 index 0000000000..1452aaa64b --- /dev/null +++ b/src/SdkConfig.js @@ -0,0 +1,45 @@ +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +var DEFAULTS = { + // 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 + integrations_rest_url: "https://scalar.vector.im/api", +}; + +class SdkConfig { + + static get() { + return global.mxReactSdkConfig; + } + + static put(cfg) { + var defaultKeys = Object.keys(DEFAULTS); + for (var i = 0; i < defaultKeys.length; ++i) { + if (cfg[defaultKeys[i]] === undefined) { + cfg[defaultKeys[i]] = DEFAULTS[defaultKeys[i]]; + } + } + global.mxReactSdkConfig = cfg; + } + + static unset() { + global.mxReactSdkConfig = undefined; + } +} + +module.exports = SdkConfig; diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index f708a3e0fb..9aad4e72de 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -19,6 +19,7 @@ var url = require('url'); var Favico = require('favico.js'); var MatrixClientPeg = require("../../MatrixClientPeg"); +var SdkConfig = require("../../SdkConfig"); var Notifier = require("../../Notifier"); var ContextualMenu = require("../../ContextualMenu"); var RoomListSorter = require("../../RoomListSorter"); @@ -123,6 +124,7 @@ module.exports = React.createClass({ }, componentWillMount: function() { + SdkConfig.put(this.props.config); this.favicon = new Favico({animation: 'none'}); },