From c1d1a1377c71ce2a07e32bb8c9ace4f539360ef2 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 12 Jun 2017 20:15:14 +0100 Subject: [PATCH] allow forcing of TURN, pass account val per-call until UX is designed. Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/CallHandler.js | 19 ++++++------- src/components/structures/UserSettings.js | 33 +++++++++++++++-------- src/i18n/strings/en_EN.json | 3 ++- 3 files changed, 34 insertions(+), 21 deletions(-) diff --git a/src/CallHandler.js b/src/CallHandler.js index b2ccf65df7..e3fbe9e5e3 100644 --- a/src/CallHandler.js +++ b/src/CallHandler.js @@ -51,13 +51,14 @@ limitations under the License. * } */ -var MatrixClientPeg = require('./MatrixClientPeg'); -var PlatformPeg = require("./PlatformPeg"); -var Modal = require('./Modal'); -var sdk = require('./index'); +import MatrixClientPeg from './MatrixClientPeg'; +import UserSettingsStore from './UserSettingsStore'; +import PlatformPeg from './PlatformPeg'; +import Modal from './Modal'; +import sdk from './index'; import { _t } from './languageHandler'; -var Matrix = require("matrix-js-sdk"); -var dis = require("./dispatcher"); +import Matrix from 'matrix-js-sdk'; +import dis from './dispatcher'; global.mxCalls = { //room_id: MatrixCall @@ -257,9 +258,9 @@ function _onAction(payload) { } else if (members.length === 2) { console.log("Place %s call in %s", payload.type, payload.room_id); - var call = Matrix.createNewMatrixCall( - MatrixClientPeg.get(), payload.room_id - ); + const call = Matrix.createNewMatrixCall(MatrixClientPeg.get(), payload.room_id, { + forceTURN: UserSettingsStore.getLocalSetting('webRtcForceTURN', false), + }); placeCall(call); } else { // > 2 diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index e73f0335f0..5ac2e77256 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -110,6 +110,13 @@ const ANALYTICS_SETTINGS_LABELS = [ }, ]; +const WEBRTC_SETTINGS_LABELS = [ + { + id: 'webRtcForceTURN', + label: 'Disable Peer-to-Peer for 1:1 calls', + }, +]; + // Warning: Each "label" string below must be added to i18n/strings/en_EN.json, // since they will be translated when rendered. const CRYPTO_SETTINGS_LABELS = [ @@ -945,16 +952,13 @@ module.exports = React.createClass({ } }, - _renderWebRtcSettings: function() { + _renderWebRtcDeviceSettings: function() { if (this.state.mediaDevices === false) { - return
-

{_t('VoIP')}

-
-

- {_t('Missing Media Permissions, click here to request.')} -

-
-
; + return ( +

+ {_t('Missing Media Permissions, click here to request.')} +

+ ); } else if (!this.state.mediaDevices) return; const Dropdown = sdk.getComponent('elements.Dropdown'); @@ -1008,10 +1012,17 @@ module.exports = React.createClass({ } return
-

{_t('VoIP')}

-
{microphoneDropdown} {webcamDropdown} +
; + }, + + _renderWebRtcSettings: function() { + return
+

{_t('VoIP')}

+
+ { WEBRTC_SETTINGS_LABELS.map(this._renderLocalSetting) } + { this._renderWebRtcDeviceSettings() }
; }, diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 51d03db0b7..0172115824 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -907,5 +907,6 @@ "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.", "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", "Not a valid Riot keyfile": "Not a valid Riot keyfile", - "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?" + "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", + "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls" }