diff --git a/.gitignore b/.gitignore index c1a042341a..4dd3a26213 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ electron/pub /config.local*.json /src/component-index.js /.tmp +/webpack-stats.json diff --git a/package.json b/package.json index c4f4942cab..50f6808e6d 100644 --- a/package.json +++ b/package.json @@ -37,11 +37,13 @@ "reskindex:watch-react": "node scripts/yarn-sub.js matrix-react-sdk reskindex:watch", "clean": "rimraf lib webapp electron_app/dist", "build": "yarn clean && yarn build:genfiles && yarn build:compile && yarn build:types && yarn build:bundle", + "build-stats": "yarn clean && yarn build:genfiles && yarn build:compile && yarn build:types && yarn build:bundle-stats", "build:res": "node scripts/copy-res.js", "build:genfiles": "yarn reskindex && yarn build:res", "build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js", "build:compile": "babel -d lib --verbose --extensions \".ts,.js,.tsx\" src", "build:bundle": "cross-env NODE_ENV=production webpack -p --progress --bail --mode production", + "build:bundle-stats": "cross-env NODE_ENV=production webpack -p --progress --bail --mode production --json > webpack-stats.json", "build:electron": "yarn build && yarn install:electron && electron-builder -wml --ia32 --x64", "build:electron:linux": "yarn build && electron-builder -l --x64", "build:electron:macos": "yarn build && electron-builder -m --x64", diff --git a/src/vector/jitsi/index.ts b/src/vector/jitsi/index.ts index 5ca99dbd3f..75b017a269 100644 --- a/src/vector/jitsi/index.ts +++ b/src/vector/jitsi/index.ts @@ -19,8 +19,6 @@ require("./index.scss"); import * as qs from 'querystring'; import { Capability, WidgetApi } from "matrix-react-sdk/src/widgets/WidgetApi"; -import SdkConfig from "matrix-react-sdk/src/SdkConfig"; -import { loadConfig, preparePlatform } from "../initial-load"; // Dev note: we use raw JS without many dependencies to reduce bundle size. // We do not need all of React to render a Jitsi conference. @@ -54,28 +52,26 @@ let widgetApi: WidgetApi; // Set this up as early as possible because Riot will be hitting it almost immediately. widgetApi = new WidgetApi(qsParam('parentUrl'), qsParam('widgetId'), [ Capability.AlwaysOnScreen, + Capability.GetRiotWebConfig, ]); - - widgetApi.waitReady().then(async () => { - // Start off by ensuring we're not stuck on screen - await widgetApi.setAlwaysOnScreen(false); - }); - - // Bootstrap ourselves for loading the script and such - preparePlatform(); - await loadConfig(); + widgetApi.expectingExplicitReady = true; // Populate the Jitsi params now - jitsiDomain = qsParam('conferenceDomain', true) || SdkConfig.get()['jitsi']['preferredDomain']; + jitsiDomain = qsParam('conferenceDomain'); conferenceId = qsParam('conferenceId'); displayName = qsParam('displayName', true); avatarUrl = qsParam('avatarUrl', true); // http not mxc userId = qsParam('userId'); + await widgetApi.waitReady(); + await widgetApi.setAlwaysOnScreen(false); // start off as detachable from the screen + + const riotConfig = await widgetApi.getRiotConfig(); + // Get the Jitsi Meet API loaded up as fast as possible, but ensure that the widget's postMessage // receiver (WidgetApi) is up and running first. const scriptTag = document.createElement("script"); - scriptTag.src = SdkConfig.get()['jitsi']['externalApiUrl']; + scriptTag.src = riotConfig['jitsi']['externalApiUrl']; document.body.appendChild(scriptTag); // TODO: register widgetApi listeners for PTT controls (https://github.com/vector-im/riot-web/issues/12795) diff --git a/webpack.config.js b/webpack.config.js index f54655b5bd..d62b6f0755 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -93,6 +93,9 @@ module.exports = (env, argv) => { // same goes for js-sdk - we don't need two copies. "matrix-js-sdk": path.resolve(__dirname, 'node_modules/matrix-js-sdk'), + // and prop-types and sanitize-html + "prop-types": path.resolve(__dirname, 'node_modules/prop-types'), + "sanitize-html": path.resolve(__dirname, 'node_modules/sanitize-html'), // Define a variable so the i18n stuff can load "$webapp": path.resolve(__dirname, 'webapp'),