From 91e9e52ca9dfa573deea059e6ecaeb3a3e5872cc Mon Sep 17 00:00:00 2001 From: duncte123 Date: Sat, 16 Nov 2024 18:23:49 +0100 Subject: [PATCH] Force load page in a loop --- README.md | 2 +- main.js | 32 +++++++++++++++++++++++++++----- package.json | 2 +- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 4bf6761..11120e7 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,4 @@ This will make portable folders that you can run to start the app -TODO: document command line args \ No newline at end of file +TODO: document command line args, remove non-needed languages from electron in an auto zip script diff --git a/main.js b/main.js index a61365d..4f4dd44 100644 --- a/main.js +++ b/main.js @@ -26,7 +26,26 @@ program.parse(); app.commandLine.appendSwitch('autoplay-policy', 'no-user-gesture-required'); -function createWindow () { +async function sleep(seconds) { + return new Promise((resolve) => setTimeout(resolve, seconds * 1000)); +} + +// Somwhow loadURL is a bit bugged, this seems to fix it on windows +// https://github.com/electron/electron/issues/28208#issuecomment-1129612599 +async function attemptLoad(win, view) { + let loaded = false; + + do { + try { + await win.loadURL(`http://localhost:9090/bundles/nodecg-vdoninja/graphics/${view}-view/main.html`); + loaded = true; + } catch (err) { + await sleep(5); + } + } while (!loaded); +} + +async function createWindow () { const { view, roomType } = program.opts(); const titleInfo = [ roomType || null @@ -55,16 +74,19 @@ function createWindow () { event.preventDefault(); }); - win.loadURL(`http://localhost:9090/bundles/nodecg-vdoninja/graphics/${view}-view/main.html`).catch(console.error); + await attemptLoad(win, view); + // Still nothing? Try again after 10 seconds + await sleep(10); + await attemptLoad(win, view); } app.whenReady().then(() => { - createWindow(); + createWindow().catch(console.log); // Specific macos stuff, doubt we ever need this. - app.on('activate', () => { + app.once('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { - createWindow(); + createWindow().catch(console.log); } }); }); diff --git a/package.json b/package.json index e068b39..1791225 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vdon-viewer", - "version": "1.0.0", + "version": "1.1.0", "description": "Bypassing autoplay restrictions with electron", "main": "main.js", "scripts": {