const { app, BrowserWindow, ipcMain } = require('electron'); const path = require('path'); const url = require('url'); const isLocal = process.argv[process.argv.length - 1] === 'local'; const extDir = isLocal ? '../build/production/saas' : 'dist'; let loginWindow; let mainWindow; // 监听session变化 ipcMain.on('session.change', (event, arg) => { if (arg) { loginWindow && loginWindow.close(); createMainWindow(arg); } else { mainWindow && mainWindow.close(); createLoginWindow(); } }); function createLoginWindow() { loginWindow = new BrowserWindow({ width: 453, height: 513, fullscreenable: false, maximizable: false, resizable: false }); loginWindow.loadURL(url.format({ pathname: path.join(__dirname, 'login.html'), protocol: 'file:', slashes: true })); if (isLocal) { loginWindow.webContents.openDevTools(); } loginWindow.on('closed', function () { loginWindow = null; }); } function createMainWindow (session) { mainWindow = new BrowserWindow({ width: 1280, height: 720, show: false }); mainWindow.once('ready-to-show', function(){ mainWindow.maximize(); mainWindow.show(); }); mainWindow.loadURL(url.format({ pathname: path.join(__dirname, extDir + '/index.html'), protocol: 'file:', slashes: true })); if (isLocal) { mainWindow.webContents.openDevTools(); } mainWindow.webContents.on("did-finish-load", function() { mainWindow.webContents.executeJavaScript('\ localStorage.setItem("app-state-session", decodeURIComponent("' + encodeURIComponent(session) + '"))'); }); mainWindow.on('closed', function () { mainWindow = null; }); } app.on('ready', createLoginWindow); // Quit when all windows are closed, except for Mac users app.on('window-all-closed', function () { if (process.platform !== 'darwin') { app.quit() } }); app.on('activate', function () { if (mainWindow === null) { createMainWindow(); } });