Skip to content

Commit

Permalink
feat(preload) limit the exposed SDK API surface
Browse files Browse the repository at this point in the history
Expose a single function that sets up everything on the renderer.
  • Loading branch information
saghul committed Mar 21, 2022
1 parent 7ec0304 commit 180540f
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 33 deletions.
34 changes: 5 additions & 29 deletions app/features/conference/components/Conference.js
Original file line number Diff line number Diff line change
Expand Up @@ -234,35 +234,11 @@ class Conference extends Component<Props, State> {
}
);

const { RemoteControl,
setupScreenSharingRender,
setupAlwaysOnTopRender,
initPopupsConfigurationRender,
setupWiFiStats,
setupPowerMonitorRender
} = window.jitsiNodeAPI.jitsiMeetElectronUtils;

initPopupsConfigurationRender(this._api);

const iframe = this._api.getIFrame();

setupScreenSharingRender(this._api);

if (ENABLE_REMOTE_CONTROL) {
new RemoteControl(iframe); // eslint-disable-line no-new
}

// Allow window to be on top if enabled in settings
if (this.props._alwaysOnTopWindowEnabled) {
setupAlwaysOnTopRender(this._api);
}

// Disable WiFiStats on mac due to jitsi-meet-electron#585
if (window.jitsiNodeAPI.platform !== 'darwin') {
setupWiFiStats(iframe);
}

setupPowerMonitorRender(this._api);
// Setup Jitsi Meet Electron SDK on this renderer.
window.jitsiNodeAPI.setupRenderer(this._api, {
enableRemoteControl: ENABLE_REMOTE_CONTROL,
enableAlwaysOnTopWindow: this.props._alwaysOnTopWindowEnabled
});
}

/**
Expand Down
44 changes: 40 additions & 4 deletions app/preload/preload.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,52 @@
/* global process */

const { ipcRenderer } = require('electron');
const jitsiMeetElectronUtils = require('@jitsi/electron-sdk');
const { RemoteControl,
setupScreenSharingRender,
setupAlwaysOnTopRender,
initPopupsConfigurationRender,
setupWiFiStats,
setupPowerMonitorRender
} = require('@jitsi/electron-sdk');
const { openExternalLink } = require('../features/utils/openExternalLink');


const platform = process.platform;
const whitelistedIpcChannels = [ 'protocol-data-msg', 'renderer-ready' ];

/**
* Setup the renderer process.
*
* @param {*} api - API object.
* @param {*} options - Options for what to enable.
* @returns {void}
*/
function setupRenderer(api, options = {}) {
initPopupsConfigurationRender(api);

const iframe = api.getIFrame();

setupScreenSharingRender(api);

if (options.enableRemoteControl) {
new RemoteControl(iframe); // eslint-disable-line no-new
}

// Allow window to be on top if enabled in settings
if (options.enableAlwaysOnTopWindow) {
setupAlwaysOnTopRender(api);
}

// Disable WiFiStats on mac due to jitsi-meet-electron#585
if (platform !== 'darwin') {
setupWiFiStats(iframe);
}

setupPowerMonitorRender(api);
}

window.jitsiNodeAPI = {
openExternalLink,
platform: process.platform,
jitsiMeetElectronUtils,
setupRenderer,
ipc: {
on: (channel, listener) => {
if (!whitelistedIpcChannels.includes(channel)) {
Expand Down

0 comments on commit 180540f

Please sign in to comment.