From c1378f8e0bc13e9447a1fe59fe842a620a6ce479 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 13 Aug 2019 15:50:36 +0100 Subject: [PATCH 1/6] Prompt for ICE server fallback permission This adds a prompt at the start of each session when the homeserver does not have any ICE servers configured. The fallback ICE server is only used if the user allows it. The dialog also recommends notifying the homeserver admin to rectify the issue. Fixes https://github.com/vector-im/riot-web/issues/10173 --- src/components/structures/MatrixChat.js | 31 +++++++++++++++++++++++++ src/i18n/strings/en_EN.json | 4 ++++ 2 files changed, 35 insertions(+) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index b8903076c7..ff30bb1605 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -1370,6 +1370,37 @@ export default React.createClass({ call: call, }, true); }); + cli.on('Call.noTURNServers', () => { + const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); + const code = sub => {sub}; + Modal.createTrackedDialog('No TURN servers', '', QuestionDialog, { + title: _t('Homeserver not configured to support calls'), + description:
+

{ _t( + "Your homeserver %(homeserverDomain)s is " + + "currently not configured to assist with calls by offering a " + + "TURN server, which means it is likely that voice and video " + + "calls will fail. Please notify your homeserver administrator " + + "so that they can address this.", + { homeserverDomain: cli.getDomain() }, { code }, + ) }

+

{ _t( + "Riot can use a fallback server turn.matrix.org " + + "for the current session if you urgently need to make a call. " + + "Your IP address would be shared with this fallback server " + + "only if you agree and later place or receive a call.", + null, { code }, + )}

+
, + button: _t('Allow Fallback'), + cancelButton: _t('Dismiss'), + onFinished: (confirmed) => { + if (confirmed) { + cli.setFallbackICEServerAllowed(true); + } + }, + }, null, true); + }); cli.on('Session.logged_out', function(errObj) { if (Lifecycle.isLoggingOut()) return; diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 0ca1ece48f..ecfdc5642a 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1507,6 +1507,10 @@ "Failed to leave room": "Failed to leave room", "Can't leave Server Notices room": "Can't leave Server Notices room", "This room is used for important messages from the Homeserver, so you cannot leave it.": "This room is used for important messages from the Homeserver, so you cannot leave it.", + "Homeserver not configured to support calls": "Homeserver not configured to support calls", + "Your homeserver %(homeserverDomain)s is currently not configured to assist with calls by offering a TURN server, which means it is likely that voice and video calls will fail. Please notify your homeserver administrator so that they can address this.": "Your homeserver %(homeserverDomain)s is currently not configured to assist with calls by offering a TURN server, which means it is likely that voice and video calls will fail. Please notify your homeserver administrator so that they can address this.", + "Riot can use a fallback server turn.matrix.org for the current session if you urgently need to make a call. Your IP address would be shared with this fallback server only if you agree and later place or receive a call.": "Riot can use a fallback server turn.matrix.org for the current session if you urgently need to make a call. Your IP address would be shared with this fallback server only if you agree and later place or receive a call.", + "Allow Fallback": "Allow Fallback", "Signed Out": "Signed Out", "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", "Terms and Conditions": "Terms and Conditions", From 1c6312d99950aa0a34a355e378fc43929dd66fd4 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 14 Aug 2019 14:02:25 +0100 Subject: [PATCH 2/6] Store ICE fallback permission in device setting This stores the ICE server fallback permission in a device setting so it is remembered across sessions. Part of https://github.com/matrix-org/matrix-react-sdk/pull/3309 --- src/MatrixClientPeg.js | 1 + src/components/structures/MatrixChat.js | 14 +++++++------- .../settings/tabs/user/VoiceUserSettingsTab.js | 15 ++++++++++++++- src/i18n/strings/en_EN.json | 3 ++- src/settings/Settings.js | 6 ++++++ 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/MatrixClientPeg.js b/src/MatrixClientPeg.js index d2760bc82c..813f0ed87e 100644 --- a/src/MatrixClientPeg.js +++ b/src/MatrixClientPeg.js @@ -216,6 +216,7 @@ class MatrixClientPeg { deviceId: creds.deviceId, timelineSupport: true, forceTURN: !SettingsStore.getValue('webRtcAllowPeerToPeer', false), + fallbackICEServerAllowed: !!SettingsStore.getValue('fallbackICEServerAllowed'), verificationMethods: [verificationMethods.SAS], unstableClientRelationAggregation: true, }; diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index ff30bb1605..f935303c0a 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -1386,18 +1386,18 @@ export default React.createClass({ ) }

{ _t( "Riot can use a fallback server turn.matrix.org " + - "for the current session if you urgently need to make a call. " + - "Your IP address would be shared with this fallback server " + - "only if you agree and later place or receive a call.", + "if you urgently need to make a call. Your IP address would be " + + "shared with this fallback server only if you agree and later " + + "place or receive a call. You can change this permission later " + + "in the Voice & Video section of Settings.", null, { code }, )}

, button: _t('Allow Fallback'), cancelButton: _t('Dismiss'), - onFinished: (confirmed) => { - if (confirmed) { - cli.setFallbackICEServerAllowed(true); - } + onFinished: (allow) => { + SettingsStore.setValue("fallbackICEServerAllowed", null, SettingLevel.DEVICE, allow); + cli.setFallbackICEServerAllowed(allow); }, }, null, true); }); diff --git a/src/components/views/settings/tabs/user/VoiceUserSettingsTab.js b/src/components/views/settings/tabs/user/VoiceUserSettingsTab.js index eb85fe4e44..18ea5a82be 100644 --- a/src/components/views/settings/tabs/user/VoiceUserSettingsTab.js +++ b/src/components/views/settings/tabs/user/VoiceUserSettingsTab.js @@ -115,6 +115,10 @@ export default class VoiceUserSettingsTab extends React.Component { MatrixClientPeg.get().setForceTURN(!p2p); }; + _changeFallbackICEServerAllowed = (allow) => { + MatrixClientPeg.get().setFallbackICEServerAllowed(allow); + }; + _renderDeviceOptions(devices, category) { return devices.map((d) => { return (); @@ -201,7 +205,16 @@ export default class VoiceUserSettingsTab extends React.Component { {microphoneDropdown} {webcamDropdown} - + + ); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index ecfdc5642a..c74b19a223 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -355,6 +355,7 @@ "Show recently visited rooms above the room list": "Show recently visited rooms above the room list", "Show hidden events in timeline": "Show hidden events in timeline", "Low bandwidth mode": "Low bandwidth mode", + "Allow fallback call assist server turn.matrix.org": "Allow fallback call assist server turn.matrix.org", "Collecting app version information": "Collecting app version information", "Collecting logs": "Collecting logs", "Uploading report": "Uploading report", @@ -1509,7 +1510,7 @@ "This room is used for important messages from the Homeserver, so you cannot leave it.": "This room is used for important messages from the Homeserver, so you cannot leave it.", "Homeserver not configured to support calls": "Homeserver not configured to support calls", "Your homeserver %(homeserverDomain)s is currently not configured to assist with calls by offering a TURN server, which means it is likely that voice and video calls will fail. Please notify your homeserver administrator so that they can address this.": "Your homeserver %(homeserverDomain)s is currently not configured to assist with calls by offering a TURN server, which means it is likely that voice and video calls will fail. Please notify your homeserver administrator so that they can address this.", - "Riot can use a fallback server turn.matrix.org for the current session if you urgently need to make a call. Your IP address would be shared with this fallback server only if you agree and later place or receive a call.": "Riot can use a fallback server turn.matrix.org for the current session if you urgently need to make a call. Your IP address would be shared with this fallback server only if you agree and later place or receive a call.", + "Riot can use a fallback server turn.matrix.org if you urgently need to make a call. Your IP address would be shared with this fallback server only if you agree and later place or receive a call. You can change this permission later in the Voice & Video section of Settings.": "Riot can use a fallback server turn.matrix.org if you urgently need to make a call. Your IP address would be shared with this fallback server only if you agree and later place or receive a call. You can change this permission later in the Voice & Video section of Settings.", "Allow Fallback": "Allow Fallback", "Signed Out": "Signed Out", "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", diff --git a/src/settings/Settings.js b/src/settings/Settings.js index 55085963d1..77e1c2cb25 100644 --- a/src/settings/Settings.js +++ b/src/settings/Settings.js @@ -372,4 +372,10 @@ export const SETTINGS = { default: false, controller: new LowBandwidthController(), }, + "fallbackICEServerAllowed": { + supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, + displayName: _td("Allow fallback call assist server turn.matrix.org"), + // This is a tri-state value, where `null` means "prompt the user". + default: null, + }, }; From d31f556c1fd982e053bb535d278acd1dbe2add24 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 14 Aug 2019 15:06:06 +0100 Subject: [PATCH 3/6] Move ICE fallback prompt to time of placing / answering calls This moves the ICE fallback prompt out of session startup and instead it will now appear contextually when your either place a call with no ICE server from the homeserver or a call fails (in either direction). Fixes https://github.com/vector-im/riot-web/issues/10546 --- src/CallHandler.js | 55 +++++++++++++++++++++++-- src/components/structures/MatrixChat.js | 31 -------------- src/i18n/strings/en_EN.json | 10 ++--- 3 files changed, 57 insertions(+), 39 deletions(-) diff --git a/src/CallHandler.js b/src/CallHandler.js index 40a8d426f8..a7feb74beb 100644 --- a/src/CallHandler.js +++ b/src/CallHandler.js @@ -1,6 +1,7 @@ /* Copyright 2015, 2016 OpenMarket Ltd Copyright 2017, 2018 New Vector 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. @@ -64,6 +65,7 @@ import { showUnknownDeviceDialogForCalls } from './cryptodevices'; import WidgetUtils from './utils/WidgetUtils'; import WidgetEchoStore from './stores/WidgetEchoStore'; import {IntegrationManagers} from "./integrations/IntegrationManagers"; +import SettingsStore, { SettingLevel } from './settings/SettingsStore'; global.mxCalls = { //room_id: MatrixCall @@ -117,8 +119,7 @@ function _reAttemptCall(call) { function _setCallListeners(call) { call.on("error", function(err) { - console.error("Call error: %s", err); - console.error(err.stack); + console.error("Call error:", err); if (err.code === 'unknown_devices') { const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); @@ -146,8 +147,15 @@ function _setCallListeners(call) { }, }); } else { - const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); + if ( + MatrixClientPeg.get().getTurnServers().length === 0 && + SettingsStore.getValue("fallbackICEServerAllowed") === null + ) { + _showICEFallbackPrompt(_t("Call Failed")); + return; + } + const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createTrackedDialog('Call Failed', '', ErrorDialog, { title: _t('Call Failed'), description: err.message, @@ -217,6 +225,39 @@ function _setCallState(call, roomId, status) { }); } +function _showICEFallbackPrompt(title) { + const cli = MatrixClientPeg.get(); + const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); + const code = sub => {sub}; + Modal.createTrackedDialog('No TURN servers', '', QuestionDialog, { + title, + description:
+

{ _t( + "Your homeserver %(homeserverDomain)s is " + + "currently not configured to assist with calls by offering a " + + "TURN server, which means it is likely that voice and video " + + "calls will fail. Please notify your homeserver administrator " + + "so that they can address this.", + { homeserverDomain: cli.getDomain() }, { code }, + ) }

+

{ _t( + "Riot can use a fallback server turn.matrix.org " + + "if you urgently need to make a call. Your IP address would be " + + "shared with this fallback server only if you agree and later " + + "place or receive a call. You can change this permission later " + + "in the Voice & Video section of Settings.", + null, { code }, + )}

+
, + button: _t('Allow Fallback'), + cancelButton: _t('Dismiss'), + onFinished: (allow) => { + SettingsStore.setValue("fallbackICEServerAllowed", null, SettingLevel.DEVICE, allow); + cli.setFallbackICEServerAllowed(allow); + }, + }, null, true); +} + function _onAction(payload) { function placeCall(newCall) { _setCallListeners(newCall); @@ -270,6 +311,14 @@ function _onAction(payload) { return; } + if ( + MatrixClientPeg.get().getTurnServers().length === 0 && + SettingsStore.getValue("fallbackICEServerAllowed") === null + ) { + _showICEFallbackPrompt(_t("Homeserver not configured to support calls")); + return; + } + const room = MatrixClientPeg.get().getRoom(payload.room_id); if (!room) { console.error("Room %s does not exist.", payload.room_id); diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index f935303c0a..b8903076c7 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -1370,37 +1370,6 @@ export default React.createClass({ call: call, }, true); }); - cli.on('Call.noTURNServers', () => { - const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); - const code = sub => {sub}; - Modal.createTrackedDialog('No TURN servers', '', QuestionDialog, { - title: _t('Homeserver not configured to support calls'), - description:
-

{ _t( - "Your homeserver %(homeserverDomain)s is " + - "currently not configured to assist with calls by offering a " + - "TURN server, which means it is likely that voice and video " + - "calls will fail. Please notify your homeserver administrator " + - "so that they can address this.", - { homeserverDomain: cli.getDomain() }, { code }, - ) }

-

{ _t( - "Riot can use a fallback server turn.matrix.org " + - "if you urgently need to make a call. Your IP address would be " + - "shared with this fallback server only if you agree and later " + - "place or receive a call. You can change this permission later " + - "in the Voice & Video section of Settings.", - null, { code }, - )}

-
, - button: _t('Allow Fallback'), - cancelButton: _t('Dismiss'), - onFinished: (allow) => { - SettingsStore.setValue("fallbackICEServerAllowed", null, SettingLevel.DEVICE, allow); - cli.setFallbackICEServerAllowed(allow); - }, - }, null, true); - }); cli.on('Session.logged_out', function(errObj) { if (Lifecycle.isLoggingOut()) return; diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index c74b19a223..ddf7a6baa7 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -28,11 +28,16 @@ "Answer": "Answer", "Call Timeout": "Call Timeout", "The remote side failed to pick up": "The remote side failed to pick up", + "Your homeserver %(homeserverDomain)s is currently not configured to assist with calls by offering a TURN server, which means it is likely that voice and video calls will fail. Please notify your homeserver administrator so that they can address this.": "Your homeserver %(homeserverDomain)s is currently not configured to assist with calls by offering a TURN server, which means it is likely that voice and video calls will fail. Please notify your homeserver administrator so that they can address this.", + "Riot can use a fallback server turn.matrix.org if you urgently need to make a call. Your IP address would be shared with this fallback server only if you agree and later place or receive a call. You can change this permission later in the Voice & Video section of Settings.": "Riot can use a fallback server turn.matrix.org if you urgently need to make a call. Your IP address would be shared with this fallback server only if you agree and later place or receive a call. You can change this permission later in the Voice & Video section of Settings.", + "Allow Fallback": "Allow Fallback", + "Dismiss": "Dismiss", "Unable to capture screen": "Unable to capture screen", "Existing Call": "Existing Call", "You are already in a call.": "You are already in a call.", "VoIP is unsupported": "VoIP is unsupported", "You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.", + "Homeserver not configured to support calls": "Homeserver not configured to support calls", "You cannot place a call with yourself.": "You cannot place a call with yourself.", "Could not connect to the integration server": "Could not connect to the integration server", "A conference call could not be started because the integrations server is not available": "A conference call could not be started because the integrations server is not available", @@ -94,7 +99,6 @@ "Unnamed Room": "Unnamed Room", "Error": "Error", "Unable to load! Check your network connectivity and try again.": "Unable to load! Check your network connectivity and try again.", - "Dismiss": "Dismiss", "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings", "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again", "Unable to enable Notifications": "Unable to enable Notifications", @@ -1508,10 +1512,6 @@ "Failed to leave room": "Failed to leave room", "Can't leave Server Notices room": "Can't leave Server Notices room", "This room is used for important messages from the Homeserver, so you cannot leave it.": "This room is used for important messages from the Homeserver, so you cannot leave it.", - "Homeserver not configured to support calls": "Homeserver not configured to support calls", - "Your homeserver %(homeserverDomain)s is currently not configured to assist with calls by offering a TURN server, which means it is likely that voice and video calls will fail. Please notify your homeserver administrator so that they can address this.": "Your homeserver %(homeserverDomain)s is currently not configured to assist with calls by offering a TURN server, which means it is likely that voice and video calls will fail. Please notify your homeserver administrator so that they can address this.", - "Riot can use a fallback server turn.matrix.org if you urgently need to make a call. Your IP address would be shared with this fallback server only if you agree and later place or receive a call. You can change this permission later in the Voice & Video section of Settings.": "Riot can use a fallback server turn.matrix.org if you urgently need to make a call. Your IP address would be shared with this fallback server only if you agree and later place or receive a call. You can change this permission later in the Voice & Video section of Settings.", - "Allow Fallback": "Allow Fallback", "Signed Out": "Signed Out", "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", "Terms and Conditions": "Terms and Conditions", From 67b830c48dd0c3720ba365bea21f7acc6491e9f6 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 15 Aug 2019 11:11:46 +0100 Subject: [PATCH 4/6] Improve fallback ICE setting label --- src/i18n/strings/en_EN.json | 2 +- src/settings/Settings.js | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index ddf7a6baa7..8b6d7e2a32 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -359,7 +359,7 @@ "Show recently visited rooms above the room list": "Show recently visited rooms above the room list", "Show hidden events in timeline": "Show hidden events in timeline", "Low bandwidth mode": "Low bandwidth mode", - "Allow fallback call assist server turn.matrix.org": "Allow fallback call assist server turn.matrix.org", + "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)", "Collecting app version information": "Collecting app version information", "Collecting logs": "Collecting logs", "Uploading report": "Uploading report", diff --git a/src/settings/Settings.js b/src/settings/Settings.js index 77e1c2cb25..b33ef3f8d7 100644 --- a/src/settings/Settings.js +++ b/src/settings/Settings.js @@ -374,7 +374,10 @@ export const SETTINGS = { }, "fallbackICEServerAllowed": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, - displayName: _td("Allow fallback call assist server turn.matrix.org"), + displayName: _td( + "Allow fallback call assist server turn.matrix.org when your homeserver " + + "does not offer one (your IP address would be shared during a call)", + ), // This is a tri-state value, where `null` means "prompt the user". default: null, }, From d610bfc5e5d463b86a2b4db20f3f1d3030ea8f0d Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 15 Aug 2019 14:44:50 +0100 Subject: [PATCH 5/6] Remove ICE fallback prompt from pre-call path --- src/CallHandler.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/CallHandler.js b/src/CallHandler.js index a7feb74beb..595cf52c15 100644 --- a/src/CallHandler.js +++ b/src/CallHandler.js @@ -311,14 +311,6 @@ function _onAction(payload) { return; } - if ( - MatrixClientPeg.get().getTurnServers().length === 0 && - SettingsStore.getValue("fallbackICEServerAllowed") === null - ) { - _showICEFallbackPrompt(_t("Homeserver not configured to support calls")); - return; - } - const room = MatrixClientPeg.get().getRoom(payload.room_id); if (!room) { console.error("Room %s does not exist.", payload.room_id); From adc3c6902201b67b62c2884e062ba625c41c2441 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 15 Aug 2019 15:04:17 +0100 Subject: [PATCH 6/6] Update ICE fallback text --- src/CallHandler.js | 33 +++++++++++++++------------------ src/i18n/strings/en_EN.json | 12 ++++++------ 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/src/CallHandler.js b/src/CallHandler.js index 595cf52c15..f6b3e18538 100644 --- a/src/CallHandler.js +++ b/src/CallHandler.js @@ -151,7 +151,7 @@ function _setCallListeners(call) { MatrixClientPeg.get().getTurnServers().length === 0 && SettingsStore.getValue("fallbackICEServerAllowed") === null ) { - _showICEFallbackPrompt(_t("Call Failed")); + _showICEFallbackPrompt(); return; } @@ -225,32 +225,29 @@ function _setCallState(call, roomId, status) { }); } -function _showICEFallbackPrompt(title) { +function _showICEFallbackPrompt() { const cli = MatrixClientPeg.get(); const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); const code = sub => {sub}; Modal.createTrackedDialog('No TURN servers', '', QuestionDialog, { - title, + title: _t("Call failed due to misconfigured server"), description:
-

{ _t( - "Your homeserver %(homeserverDomain)s is " + - "currently not configured to assist with calls by offering a " + - "TURN server, which means it is likely that voice and video " + - "calls will fail. Please notify your homeserver administrator " + - "so that they can address this.", +

{_t( + "Please ask the administrator of your homeserver " + + "(%(homeserverDomain)s) to configure a TURN server in " + + "order for calls to work reliably.", { homeserverDomain: cli.getDomain() }, { code }, - ) }

-

{ _t( - "Riot can use a fallback server turn.matrix.org " + - "if you urgently need to make a call. Your IP address would be " + - "shared with this fallback server only if you agree and later " + - "place or receive a call. You can change this permission later " + - "in the Voice & Video section of Settings.", + )}

+

{_t( + "Alternatively, you can try to use the public server at " + + "turn.matrix.org, but this will not be as reliable, and " + + "it will share your IP address with that server. You can also manage " + + "this in Settings.", null, { code }, )}

, - button: _t('Allow Fallback'), - cancelButton: _t('Dismiss'), + button: _t('Try using turn.matrix.org'), + cancelButton: _t('OK'), onFinished: (allow) => { SettingsStore.setValue("fallbackICEServerAllowed", null, SettingLevel.DEVICE, allow); cli.setFallbackICEServerAllowed(allow); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8b6d7e2a32..ce23180526 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -28,16 +28,16 @@ "Answer": "Answer", "Call Timeout": "Call Timeout", "The remote side failed to pick up": "The remote side failed to pick up", - "Your homeserver %(homeserverDomain)s is currently not configured to assist with calls by offering a TURN server, which means it is likely that voice and video calls will fail. Please notify your homeserver administrator so that they can address this.": "Your homeserver %(homeserverDomain)s is currently not configured to assist with calls by offering a TURN server, which means it is likely that voice and video calls will fail. Please notify your homeserver administrator so that they can address this.", - "Riot can use a fallback server turn.matrix.org if you urgently need to make a call. Your IP address would be shared with this fallback server only if you agree and later place or receive a call. You can change this permission later in the Voice & Video section of Settings.": "Riot can use a fallback server turn.matrix.org if you urgently need to make a call. Your IP address would be shared with this fallback server only if you agree and later place or receive a call. You can change this permission later in the Voice & Video section of Settings.", - "Allow Fallback": "Allow Fallback", - "Dismiss": "Dismiss", + "Call failed due to misconfigured server": "Call failed due to misconfigured server", + "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.", + "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.", + "Try using turn.matrix.org": "Try using turn.matrix.org", + "OK": "OK", "Unable to capture screen": "Unable to capture screen", "Existing Call": "Existing Call", "You are already in a call.": "You are already in a call.", "VoIP is unsupported": "VoIP is unsupported", "You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.", - "Homeserver not configured to support calls": "Homeserver not configured to support calls", "You cannot place a call with yourself.": "You cannot place a call with yourself.", "Could not connect to the integration server": "Could not connect to the integration server", "A conference call could not be started because the integrations server is not available": "A conference call could not be started because the integrations server is not available", @@ -99,6 +99,7 @@ "Unnamed Room": "Unnamed Room", "Error": "Error", "Unable to load! Check your network connectivity and try again.": "Unable to load! Check your network connectivity and try again.", + "Dismiss": "Dismiss", "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings", "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again", "Unable to enable Notifications": "Unable to enable Notifications", @@ -383,7 +384,6 @@ "Decline": "Decline", "Accept": "Accept", "The other party cancelled the verification.": "The other party cancelled the verification.", - "OK": "OK", "Verified!": "Verified!", "You've successfully verified this user.": "You've successfully verified this user.", "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.",