diff --git a/src/CallHandler.js b/src/CallHandler.js index 5349e628bb..4e6ceb6382 100644 --- a/src/CallHandler.js +++ b/src/CallHandler.js @@ -62,6 +62,7 @@ import dis from './dispatcher'; import { showUnknownDeviceDialogForCalls } from './cryptodevices'; import SettingsStore from "./settings/SettingsStore"; import WidgetUtils from './utils/WidgetUtils'; +import ScalarAuthClient from './ScalarAuthClient'; global.mxCalls = { //room_id: MatrixCall @@ -401,7 +402,29 @@ function _onAction(payload) { } } -function _startCallApp(roomId, type) { +async function _startCallApp(roomId, type) { + // check for a working intgrations manager. Technically we could put + // the state event in anyway, but the resulting widget would then not + // work for us. Better that the user knows before everyone else in the + // room sees it. + const scalarClient = new ScalarAuthClient(); + let haveScalar = false; + try { + await scalarClient.connect(); + haveScalar = scalarClient.hasCredentials(); + } catch (e) { + // fall through + } + if (!haveScalar) { + const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); + + Modal.createTrackedDialog('Could not connect to the integration server', '', ErrorDialog, { + title: _t('Could not connect to the integration server'), + description: _t('A conference call could not be started because the intgrations server is not available'), + }); + return; + } + dis.dispatch({ action: 'appsDrawer', show: true, diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 39eba74519..ee5006ce4c 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -39,6 +39,8 @@ "Conference calling is in development and may not be reliable.": "Conference calling is in development and may not be reliable.", "Failed to set up conference call": "Failed to set up conference call", "Conference call failed.": "Conference call failed.", + "Could not connect to the integration server": "Could not connect to the integration server", + "A conference call could not be started because the intgrations server is not available": "A conference call could not be started because the intgrations server is not available", "Call in Progress": "Call in Progress", "A call is already in progress!": "A call is already in progress!", "Permission Required": "Permission Required", @@ -712,7 +714,6 @@ "Uploaded on %(date)s by %(user)s": "Uploaded on %(date)s by %(user)s", "Download this file": "Download this file", "Integrations Error": "Integrations Error", - "Could not connect to the integration server": "Could not connect to the integration server", "Manage Integrations": "Manage Integrations", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)sjoined %(count)s times",