main.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. const { app, BrowserWindow, ipcMain } = require('electron');
  2. const path = require('path');
  3. const url = require('url');
  4. const isLocal = process.argv[process.argv.length - 1] === 'local';
  5. const extDir = isLocal ? '../build/production/saas' : 'dist';
  6. let loginWindow;
  7. let mainWindow;
  8. // 监听session变化
  9. ipcMain.on('session.change', (event, arg) => {
  10. if (arg) {
  11. loginWindow && loginWindow.close();
  12. createMainWindow(arg);
  13. } else {
  14. mainWindow && mainWindow.close();
  15. createLoginWindow();
  16. }
  17. });
  18. function createLoginWindow() {
  19. loginWindow = new BrowserWindow({ width: 453, height: 513, fullscreenable: false, maximizable: false, resizable: false });
  20. loginWindow.loadURL(url.format({
  21. pathname: path.join(__dirname, 'login.html'),
  22. protocol: 'file:',
  23. slashes: true
  24. }));
  25. if (isLocal) {
  26. loginWindow.webContents.openDevTools();
  27. }
  28. loginWindow.on('closed', function () {
  29. loginWindow = null;
  30. });
  31. }
  32. function createMainWindow (session) {
  33. mainWindow = new BrowserWindow({ width: 1280, height: 720, show: false });
  34. mainWindow.once('ready-to-show', function(){
  35. mainWindow.maximize();
  36. mainWindow.show();
  37. });
  38. mainWindow.loadURL(url.format({
  39. pathname: path.join(__dirname, extDir + '/index.html'),
  40. protocol: 'file:',
  41. slashes: true
  42. }));
  43. if (isLocal) {
  44. mainWindow.webContents.openDevTools();
  45. }
  46. mainWindow.webContents.on("did-finish-load", function() {
  47. mainWindow.webContents.executeJavaScript('\
  48. localStorage.setItem("app-state-session", decodeURIComponent("' + encodeURIComponent(session) + '"))');
  49. });
  50. mainWindow.on('closed', function () {
  51. mainWindow = null;
  52. });
  53. }
  54. app.on('ready', createLoginWindow);
  55. // Quit when all windows are closed, except for Mac users
  56. app.on('window-all-closed', function () {
  57. if (process.platform !== 'darwin') {
  58. app.quit()
  59. }
  60. });
  61. app.on('activate', function () {
  62. if (mainWindow === null) {
  63. createMainWindow();
  64. }
  65. });