From 858fdcec59adf33f64a4b37cd61d055cad789b30 Mon Sep 17 00:00:00 2001 From: Samuel Elliott Date: Sat, 31 Mar 2018 22:49:00 +0100 Subject: [PATCH] Clean up and comment --- core/src/main.js | 7 +++- core/src/patch-browser-window.js | 57 -------------------------------- 2 files changed, 6 insertions(+), 58 deletions(-) delete mode 100644 core/src/patch-browser-window.js diff --git a/core/src/main.js b/core/src/main.js index f721eb73..ecc6eea6 100644 --- a/core/src/main.js +++ b/core/src/main.js @@ -57,9 +57,9 @@ class PatchedBrowserWindow extends BrowserWindow { const options = Object.assign({}, originalOptions); options.webPreferences = Object.assign({}, options.webPreferences); + // Make sure Node integration is enabled options.webPreferences.nodeIntegration = true; - console.log('Creating new BrowserWindow with options', options, originalOptions); return new BrowserWindow(options); } } @@ -211,6 +211,11 @@ class BetterDiscord { return this.windowUtils.injectScript(this.config.getPath('cs')); } + /** + * Patches Electron's BrowserWindow so all windows have Node integration enabled. + * This needs to be called only once before the main window is created (or BrowserWindow is put in a variable). + * Basically BetterDiscord needs to load before discord_desktop_core. + */ static patchBrowserWindow() { const electron_path = require.resolve('electron'); const browser_window_path = require.resolve(path.resolve(electron_path, '..', '..', 'browser-window.js')); diff --git a/core/src/patch-browser-window.js b/core/src/patch-browser-window.js deleted file mode 100644 index b8378daf..00000000 --- a/core/src/patch-browser-window.js +++ /dev/null @@ -1,57 +0,0 @@ - - -const electron = require('electron'); -const path = require('path'); - -const _BrowserWindow = electron.BrowserWindow; - -console.log('Open windows:', _BrowserWindow.getAllWindows()); -console.log('Open window URLs:', _BrowserWindow.getAllWindows().map(w => w.getURL())); - -console.log('Patching BrowserWindow'); - -class PatchedBrowserWindow extends _BrowserWindow { - constructor(originalOptions) { - const options = Object.assign({}, originalOptions); - options.webPreferences = Object.assign({}, options.webPreferences); - - options.webPreferences.nodeIntegration = true; - - console.log('Creating new BrowserWindow with options', options, originalOptions); - return new _BrowserWindow(options); - } -}; - -// Can't just do this because electron.BrowserWindow is a getter -// electron.BrowserWindow = PatchedBrowserWindow; - -// Can't do this either because it's not configurable because ^^ -// Object.defineProperty(electron, 'BrowserWindow', { -// get: () => PatchedBrowserWindow -// }); - -console.log('Electron:', electron); - -console.log('Electron BrowserWindow getter:', electron.__lookupGetter__('BrowserWindow')); -console.log('Electron BrowserWindow setter:', electron.__lookupSetter__('BrowserWindow')); - -const electron_path = require.resolve('electron'); -const electron_module = require.cache[electron_path]; -console.log('Electron module path:', electron_path); -console.log('Electron module:', electron_module); - -const browser_window_path = require.resolve(path.resolve(electron_path, '..', '..', 'browser-window.js')); -const browser_window_module = require.cache[browser_window_path]; -console.log('BrowserWindow module path:', browser_window_path); -console.log('BrowserWindow module:', browser_window_module); - -browser_window_module.exports = PatchedBrowserWindow; - -try { - new (require("../../../../BetterDiscord")).BetterDiscord(); -} catch (err) { - console.err('Error loading BetterDiscord:', err); -} - -// Main window is created here -module.exports = require('./core');