diff --git a/src/BasePlatform.js b/src/BasePlatform.js
index abc9aa0bed..79f0d69e2c 100644
--- a/src/BasePlatform.js
+++ b/src/BasePlatform.js
@@ -3,6 +3,7 @@
/*
Copyright 2016 Aviral Dasgupta
Copyright 2016 OpenMarket Ltd
+Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -105,11 +106,6 @@ export default class BasePlatform {
return "Not implemented";
}
- isElectron(): boolean { return false; }
-
- setupScreenSharingForIframe() {
- }
-
/**
* Restarts the application, without neccessarily reloading
* any application code
diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js
index 6f932d71e1..b9dbe345c5 100644
--- a/src/components/structures/UserSettings.js
+++ b/src/components/structures/UserSettings.js
@@ -188,9 +188,11 @@ module.exports = React.createClass({
phase: "UserSettings.LOADING", // LOADING, DISPLAY
email_add_pending: false,
vectorVersion: undefined,
+ canSelfUpdate: null,
rejectingInvites: false,
mediaDevices: null,
ignoredUsers: [],
+ autoLaunchEnabled: null,
};
},
@@ -209,6 +211,13 @@ module.exports = React.createClass({
}, (e) => {
console.log("Failed to fetch app version", e);
});
+
+ PlatformPeg.get().canSelfUpdate().then((canUpdate) => {
+ if (this._unmounted) return;
+ this.setState({
+ canSelfUpdate: canUpdate,
+ });
+ });
}
this._refreshMediaDevices();
@@ -227,11 +236,12 @@ module.exports = React.createClass({
});
this._refreshFromServer();
- if (PlatformPeg.get().isElectron()) {
- const {ipcRenderer} = require('electron');
-
- ipcRenderer.on('settings', this._electronSettings);
- ipcRenderer.send('settings_get');
+ if (PlatformPeg.get().supportsAutoLaunch()) {
+ PlatformPeg.get().getAutoLaunchEnabled().then(enabled => {
+ this.setState({
+ autoLaunchEnabled: enabled,
+ });
+ });
}
this.setState({
@@ -262,11 +272,6 @@ module.exports = React.createClass({
if (cli) {
cli.removeListener("RoomMember.membership", this._onInviteStateChange);
}
-
- if (PlatformPeg.get().isElectron()) {
- const {ipcRenderer} = require('electron');
- ipcRenderer.removeListener('settings', this._electronSettings);
- }
},
// `UserSettings` assumes that the client peg will not be null, so give it some
@@ -285,10 +290,6 @@ module.exports = React.createClass({
});
},
- _electronSettings: function(ev, settings) {
- this.setState({ electron_settings: settings });
- },
-
_refreshMediaDevices: function(stream) {
if (stream) {
// kill stream so that we don't leave it lingering around with webcam enabled etc
@@ -967,7 +968,7 @@ module.exports = React.createClass({
_renderCheckUpdate: function() {
const platform = PlatformPeg.get();
- if ('canSelfUpdate' in platform && platform.canSelfUpdate() && 'startUpdateCheck' in platform) {
+ if (this.state.canSelfUpdate) {
return
{ _t('Updates') }
@@ -1012,8 +1013,7 @@ module.exports = React.createClass({
},
_renderElectronSettings: function() {
- const settings = this.state.electron_settings;
- if (!settings) return;
+ if (!PlatformPeg.get().supportsAutoLaunch()) return;
// TODO: This should probably be a granular setting, but it only applies to electron
// and ends up being get/set outside of matrix anyways (local system setting).
@@ -1023,7 +1023,7 @@ module.exports = React.createClass({
@@ -1033,8 +1033,11 @@ module.exports = React.createClass({
},
_onAutoLaunchChanged: function(e) {
- const {ipcRenderer} = require('electron');
- ipcRenderer.send('settings_set', 'auto-launch', e.target.checked);
+ PlatformPeg.get().setAutoLaunchEnabled(e.target.checked).then(() => {
+ this.setState({
+ autoLaunchEnabled: e.target.checked,
+ });
+ });
},
_mapWebRtcDevicesToSpans: function(devices) {
@@ -1393,7 +1396,7 @@ module.exports = React.createClass({
{ this._renderBulkOptions() }
{ this._renderBugReport() }
- { PlatformPeg.get().isElectron() && this._renderElectronSettings() }
+ { this._renderElectronSettings() }
{ this._renderAnalyticsControl() }
diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js
index 23b24adbb4..7eae17ace8 100644
--- a/src/components/views/elements/AppTile.js
+++ b/src/components/views/elements/AppTile.js
@@ -49,7 +49,6 @@ export default class AppTile extends React.Component {
this.state = this._getNewState(props);
this._onAction = this._onAction.bind(this);
- this._onMessage = this._onMessage.bind(this);
this._onLoaded = this._onLoaded.bind(this);
this._onEditClick = this._onEditClick.bind(this);
this._onDeleteClick = this._onDeleteClick.bind(this);
@@ -143,10 +142,6 @@ export default class AppTile extends React.Component {
}
componentDidMount() {
- // Legacy Jitsi widget messaging -- TODO replace this with standard widget
- // postMessaging API
- window.addEventListener('message', this._onMessage, false);
-
// Widget action listeners
this.dispatcherRef = dis.register(this._onAction);
}
@@ -155,9 +150,6 @@ export default class AppTile extends React.Component {
// Widget action listeners
dis.unregister(this.dispatcherRef);
- // Jitsi listener
- window.removeEventListener('message', this._onMessage);
-
// if it's not remaining on screen, get rid of the PersistedElement container
if (!ActiveWidgetStore.getWidgetPersistence(this.props.id)) {
ActiveWidgetStore.destroyPersistentWidget();
@@ -233,32 +225,6 @@ export default class AppTile extends React.Component {
}
}
- // Legacy Jitsi widget messaging
- // TODO -- This should be replaced with the new widget postMessaging API
- _onMessage(event) {
- if (this.props.type !== 'jitsi') {
- return;
- }
- if (!event.origin) {
- event.origin = event.originalEvent.origin;
- }
-
- const widgetUrlObj = url.parse(this.state.widgetUrl);
- const eventOrigin = url.parse(event.origin);
- if (
- eventOrigin.protocol !== widgetUrlObj.protocol ||
- eventOrigin.host !== widgetUrlObj.host
- ) {
- return;
- }
-
- if (event.data.widgetAction === 'jitsi_iframe_loaded') {
- const iframe = this.refs.appFrame.contentWindow
- .document.querySelector('iframe[id^="jitsiConferenceFrame"]');
- PlatformPeg.get().setupScreenSharingForIframe(iframe);
- }
- }
-
_canUserModify() {
// User widgets should always be modifiable by their creator
if (this.props.userWidget && MatrixClientPeg.get().credentials.userId === this.props.creatorUserId) {