const { app, BrowserWindow, session, shell } = require('electron'); const path = require('path'); const { setupAdBlocker } = require('./ad-blocker'); // Handle Squirrel events (Windows installer) try { if (require('electron-squirrel-startup')) app.quit(); } catch { // electron-squirrel-startup not installed, skip } const HUB_URL = process.env.GAMING_HUB_URL || 'https://hub.daddelolymp.de'; let mainWindow; function createWindow() { mainWindow = new BrowserWindow({ width: 1400, height: 900, minWidth: 900, minHeight: 600, title: 'Gaming Hub', icon: path.join(__dirname, 'assets', 'icon.png'), webPreferences: { preload: path.join(__dirname, 'preload.js'), contextIsolation: true, nodeIntegration: false, }, backgroundColor: '#1a1b1e', autoHideMenuBar: true, }); // Setup ad blocker BEFORE loading URL setupAdBlocker(session.defaultSession); // Custom User-Agent to identify Electron app const currentUA = mainWindow.webContents.getUserAgent(); mainWindow.webContents.setUserAgent(currentUA + ' GamingHubDesktop/1.5.0'); mainWindow.loadURL(HUB_URL); // Open external links in default browser mainWindow.webContents.setWindowOpenHandler(({ url }) => { if (!url.startsWith(HUB_URL)) { shell.openExternal(url); return { action: 'deny' }; } return { action: 'allow' }; }); // Handle navigation to external URLs mainWindow.webContents.on('will-navigate', (event, url) => { if (!url.startsWith(HUB_URL)) { event.preventDefault(); shell.openExternal(url); } }); } app.whenReady().then(createWindow); app.on('window-all-closed', () => { if (process.platform !== 'darwin') app.quit(); }); app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) createWindow(); });