diff --git a/src/bootstrap.js b/src/bootstrap.js index 7e260a8..e984914 100644 --- a/src/bootstrap.js +++ b/src/bootstrap.js @@ -1,4 +1,4 @@ -const { app, BrowserWindow } = require('electron'); +const { app } = require('electron'); const { readFileSync } = require('fs'); const { join } = require('path'); @@ -28,6 +28,20 @@ const autoStart = require('./autoStart'); let desktopCore; const startCore = () => { + app.on('browser-window-created', (e, bw) => { // Main window injection + bw.webContents.on('dom-ready', () => { + splash.pageReady(); // Override Core's pageReady with our own on dom-ready to show main window earlier + + const [ channel, hash ] = oaVersion.split('-'); // Split via - + + bw.webContents.executeJavaScript( + readFileSync(join(__dirname, 'mainWindow.js'), 'utf8') + .replaceAll('', channel) + .replaceAll('', hash || 'custom') + ); + }); + }); + desktopCore = require('./utils/requireNative')('discord_desktop_core'); desktopCore.startup({ @@ -42,29 +56,6 @@ const startCore = () => { autoStart, crashReporterSetup: require('./crashReporterSetup'), }); - - setImmediate(() => { - if (!global.mainWindowId) return; - - const bw = BrowserWindow.fromId(global.mainWindowId); - - let done = false; - bw.webContents.on('dom-ready', () => { - if (!done) { // Only run once - splash.pageReady(); // Override Core's pageReady with our own on dom-ready to show main window earlier - - done = true; - } - - const [ channel, hash ] = oaVersion.split('-'); // Split via - - - bw.webContents.executeJavaScript( - readFileSync(join(__dirname, 'mainWindow.js'), 'utf8') - .replaceAll('', channel) - .replaceAll('', hash || 'custom') - ); - }); - }); }; const startUpdate = async () => { diff --git a/src/splash/index.js b/src/splash/index.js index 9a8d943..6e11264 100644 --- a/src/splash/index.js +++ b/src/splash/index.js @@ -38,20 +38,19 @@ exports.initSplash = (startMin = false) => { }; exports.focusWindow = () => splashWindow?.focus?.(); -exports.pageReady = () => destroySplash() || process.nextTick(() => events.emit('APP_SHOULD_SHOW')); +exports.pageReady = () => destroySplash() && process.nextTick(() => events.emit('APP_SHOULD_SHOW')); const destroySplash = () => { - log('Splash', 'Destroy'); + splashWindow?.setSkipTaskbar?.(true); - if (!splashWindow) return; - - splashWindow.setSkipTaskbar(true); setTimeout(() => { if (!splashWindow) return; splashWindow.hide(); splashWindow.close(); splashWindow = null; + + return true; }, 100); };