const { app, BrowserWindow, ipcMain } = require('electron'); const path = require('path'); const isDev = process.env.NODE_ENV === 'development'; const port = process.env.PORT || 3000; // Keep a global reference of the window object to prevent garbage collection let mainWindow; function createWindow() { mainWindow = new BrowserWindow({ width: 1200, height: 800, webPreferences: { nodeIntegration: false, contextIsolation: true, preload: path.join(__dirname, 'preload.js') }, icon: path.join(__dirname, '../public/favicon.ico') }); // Load the app const startUrl = isDev ? `http://localhost:${port}` : `file://${path.join(__dirname, '../.next/index.html')}`; mainWindow.loadURL(startUrl); // Open DevTools in development mode if (isDev) { mainWindow.webContents.openDevTools(); } mainWindow.on('closed', () => { mainWindow = null; }); // Handle window maximize/unmaximize mainWindow.on('maximize', () => { mainWindow.webContents.send('window-maximized'); }); mainWindow.on('unmaximize', () => { mainWindow.webContents.send('window-unmaximized'); }); } app.whenReady().then(createWindow); app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } }); // IPC handlers for window controls ipcMain.handle('minimize-window', () => { mainWindow.minimize(); }); ipcMain.handle('maximize-window', () => { if (mainWindow.isMaximized()) { mainWindow.unmaximize(); } else { mainWindow.maximize(); } }); ipcMain.handle('close-window', () => { mainWindow.close(); });