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
This commit is contained in:
J. Ryan Stinnett 2019-08-14 14:02:25 +01:00
parent c1378f8e0b
commit 1c6312d999
5 changed files with 30 additions and 9 deletions

View file

@ -216,6 +216,7 @@ class MatrixClientPeg {
deviceId: creds.deviceId, deviceId: creds.deviceId,
timelineSupport: true, timelineSupport: true,
forceTURN: !SettingsStore.getValue('webRtcAllowPeerToPeer', false), forceTURN: !SettingsStore.getValue('webRtcAllowPeerToPeer', false),
fallbackICEServerAllowed: !!SettingsStore.getValue('fallbackICEServerAllowed'),
verificationMethods: [verificationMethods.SAS], verificationMethods: [verificationMethods.SAS],
unstableClientRelationAggregation: true, unstableClientRelationAggregation: true,
}; };

View file

@ -1386,18 +1386,18 @@ export default React.createClass({
) }</p> ) }</p>
<p>{ _t( <p>{ _t(
"Riot can use a fallback server <code>turn.matrix.org</code> " + "Riot can use a fallback server <code>turn.matrix.org</code> " +
"for the current session if you urgently need to make a call. " + "if you urgently need to make a call. Your IP address would be " +
"Your IP address would be shared with this fallback server " + "shared with this fallback server only if you agree and later " +
"only if you agree and later place or receive a call.", "place or receive a call. You can change this permission later " +
"in the Voice & Video section of Settings.",
null, { code }, null, { code },
)}</p> )}</p>
</div>, </div>,
button: _t('Allow Fallback'), button: _t('Allow Fallback'),
cancelButton: _t('Dismiss'), cancelButton: _t('Dismiss'),
onFinished: (confirmed) => { onFinished: (allow) => {
if (confirmed) { SettingsStore.setValue("fallbackICEServerAllowed", null, SettingLevel.DEVICE, allow);
cli.setFallbackICEServerAllowed(true); cli.setFallbackICEServerAllowed(allow);
}
}, },
}, null, true); }, null, true);
}); });

View file

@ -115,6 +115,10 @@ export default class VoiceUserSettingsTab extends React.Component {
MatrixClientPeg.get().setForceTURN(!p2p); MatrixClientPeg.get().setForceTURN(!p2p);
}; };
_changeFallbackICEServerAllowed = (allow) => {
MatrixClientPeg.get().setFallbackICEServerAllowed(allow);
};
_renderDeviceOptions(devices, category) { _renderDeviceOptions(devices, category) {
return devices.map((d) => { return devices.map((d) => {
return (<option key={`${category}-${d.deviceId}`} value={d.deviceId}>{d.label}</option>); return (<option key={`${category}-${d.deviceId}`} value={d.deviceId}>{d.label}</option>);
@ -201,7 +205,16 @@ export default class VoiceUserSettingsTab extends React.Component {
{microphoneDropdown} {microphoneDropdown}
{webcamDropdown} {webcamDropdown}
<SettingsFlag name='VideoView.flipVideoHorizontally' level={SettingLevel.ACCOUNT} /> <SettingsFlag name='VideoView.flipVideoHorizontally' level={SettingLevel.ACCOUNT} />
<SettingsFlag name='webRtcAllowPeerToPeer' level={SettingLevel.DEVICE} onChange={this._changeWebRtcMethod} /> <SettingsFlag
name='webRtcAllowPeerToPeer'
level={SettingLevel.DEVICE}
onChange={this._changeWebRtcMethod}
/>
<SettingsFlag
name='fallbackICEServerAllowed'
level={SettingLevel.DEVICE}
onChange={this._changeFallbackICEServerAllowed}
/>
</div> </div>
</div> </div>
); );

View file

@ -355,6 +355,7 @@
"Show recently visited rooms above the room list": "Show recently visited rooms above the room list", "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", "Show hidden events in timeline": "Show hidden events in timeline",
"Low bandwidth mode": "Low bandwidth mode", "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 app version information": "Collecting app version information",
"Collecting logs": "Collecting logs", "Collecting logs": "Collecting logs",
"Uploading report": "Uploading report", "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.", "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", "Homeserver not configured to support calls": "Homeserver not configured to support calls",
"Your homeserver <code>%(homeserverDomain)s</code> 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 <code>%(homeserverDomain)s</code> 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 <code>%(homeserverDomain)s</code> 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 <code>%(homeserverDomain)s</code> 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 <code>turn.matrix.org</code> 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 <code>turn.matrix.org</code> 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 <code>turn.matrix.org</code> 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 <code>turn.matrix.org</code> 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", "Allow Fallback": "Allow Fallback",
"Signed Out": "Signed Out", "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.", "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.",

View file

@ -372,4 +372,10 @@ export const SETTINGS = {
default: false, default: false,
controller: new LowBandwidthController(), 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,
},
}; };