Files
Multi-Hoster-Upload/lib/startup-renderer.js
T
Sucukdeluxe ff1593be81 fix: gate native window reveal on renderer load
Keep BrowserWindow hidden until both ready-to-show and did-finish-load are complete, preventing the incomplete header from reaching the screen.

Render a static upload-speed baseline beneath the transparent canvas so the zero line exists independently of renderer timers.

Add regression coverage for both reveal event orders, load failures, and the script-independent header baseline.
2026-08-20 13:45:02 +02:00

48 lines
1.5 KiB
JavaScript

function configureStartupRenderer(app, env = process.env, platform = process.platform) {
const sessionName = String(env && env.SESSIONNAME || '');
if (platform === 'win32' && /^RDP-/i.test(sessionName)) app.disableHardwareAcceleration();
return app;
}
function resolveStartupLanguage(config) {
return config && config.globalSettings && config.globalSettings.language === 'de' ? 'de' : 'en';
}
function createStartupQuery(config, version) {
const normalizedVersion = /^\d+\.\d+\.\d+$/.test(String(version || '').trim()) ? String(version).trim() : '';
return { language: resolveStartupLanguage(config), version: normalizedVersion };
}
function createStartupWindow(BrowserWindow, options) {
const window = new BrowserWindow({ ...options, show: false });
let nativePaintReady = false;
let rendererLoadFinished = false;
let revealed = false;
const reveal = () => {
if (revealed || !nativePaintReady || !rendererLoadFinished) return;
revealed = true;
window.show();
};
window.once('ready-to-show', () => {
nativePaintReady = true;
reveal();
});
window.webContents.once('did-finish-load', () => {
rendererLoadFinished = true;
reveal();
});
return {
window,
load(target, onLoadError, options) {
return window.loadFile(target, options).catch((error) => {
rendererLoadFinished = true;
reveal();
return onLoadError(error);
});
}
};
}
module.exports = { configureStartupRenderer, createStartupWindow, resolveStartupLanguage, createStartupQuery };