main.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. const { app, BrowserWindow } = require('electron');
  2. const path = require('path');
  3. const { setupIpcHandlers } = require('./src/nodeapi/ipcHandlers')
  4. let mainWindow;
  5. let storedDrafId = null;
  6. app.on('open-url', (event, url) => {
  7. event.preventDefault();
  8. console.log('open-url event triggered:', url);
  9. const urlObj = new URL(url);
  10. const drafId = urlObj.searchParams.get('drafId');
  11. console.log(drafId, 'drafId');
  12. if (drafId) {
  13. storedDrafId = drafId; // 存储 drafId
  14. console.log('/batchList');
  15. // 获取所有窗体并发送消息
  16. const allWindows = BrowserWindow.getAllWindows();
  17. allWindows.forEach(win => {
  18. win.webContents.send('navigate-to-batchList', drafId);
  19. });
  20. }
  21. });
  22. app.on('ready', () => {
  23. console.log('app.on ready');
  24. createWindow();
  25. // 设置默认协议客户端
  26. if (process.defaultApp) {
  27. if (process.argv.length >= 2) {
  28. app.setAsDefaultProtocolClient('jianyingAssistant', process.execPath, [path.resolve(process.argv[1])]);
  29. }
  30. } else {
  31. app.setAsDefaultProtocolClient('jianyingAssistant');
  32. }
  33. // 监听 batchList-ready 信号
  34. const { ipcMain } = require('electron');
  35. ipcMain.on('batchList-ready', (event) => {
  36. if (storedDrafId) {
  37. event.sender.send('navigate-to-batchList', storedDrafId);
  38. storedDrafId = null; // 发送后清除存储的 drafId
  39. }
  40. });
  41. });
  42. function createWindow () {
  43. mainWindow = new BrowserWindow({
  44. width: 1366,
  45. height: 768,
  46. icon: path.join(__dirname, './assets/icons/logo.ico'),
  47. webPreferences: {
  48. preload: path.join(__dirname, 'preload.js'),
  49. nodeIntegration: false,
  50. contextIsolation: true,
  51. }
  52. });
  53. if (process.platform==='darwin') {
  54. app.dock.setIcon(path.join(__dirname, './assets/icons/logo.png'))
  55. }
  56. mainWindow.loadFile(path.join(__dirname, 'dist', 'index.html'));
  57. // 设置 IPC 处理程序
  58. setupIpcHandlers();
  59. mainWindow.on('closed', function () {
  60. mainWindow = null;
  61. });
  62. }
  63. app.on('window-all-closed', function () {
  64. if (process.platform !== 'darwin') {
  65. app.quit();
  66. }
  67. });
  68. app.on('activate', function () {
  69. if (mainWindow === null) {
  70. createWindow();
  71. }
  72. });