diff --git a/electron/controller/effect.js b/electron/controller/effect.js index f4c692a..f732a82 100644 --- a/electron/controller/effect.js +++ b/electron/controller/effect.js @@ -2,7 +2,7 @@ const { dialog } = require('electron'); const _ = require('lodash'); -const { getMainWindow } = require('ee-core/electron/window'); +const { getMainWindow } = require('ee-core/electron'); /** * effect - demo diff --git a/electron/controller/framework.js b/electron/controller/framework.js index a92a64b..6a3293d 100644 --- a/electron/controller/framework.js +++ b/electron/controller/framework.js @@ -10,7 +10,7 @@ const { logger } = require('ee-core/log'); const { getConfig } = require('ee-core/config'); const { frameworkService } = require('../service/framework'); const { sqlitedbService } = require('../service/database/sqlitedb'); -const { autoUpdater } = require('../service/os/auto_updater'); +const { autoUpdaterService } = require('../service/os/auto_updater'); /** * framework - demo @@ -246,7 +246,7 @@ class FrameworkController { * 检查是否有新版本 */ checkForUpdater() { - autoUpdater.checkUpdate(); + autoUpdaterService.checkUpdate(); return; } @@ -254,7 +254,7 @@ class FrameworkController { * 下载新版本 */ downloadApp() { - autoUpdater.download(); + autoUpdaterService.download(); return; } diff --git a/electron/preload/index.js b/electron/preload/index.js index d2c53a7..cdc098f 100644 --- a/electron/preload/index.js +++ b/electron/preload/index.js @@ -2,9 +2,16 @@ ** preload为预加载模块,该文件将会在程序启动时加载 ** *************************************************/ +const { trayService } = require('../service/os/tray'); +const { securityService } = require('../service/os/security'); +const { autoUpdaterService } = require('../service/os/auto_updater'); + function preload() { // 示例功能模块,可选择性使用和修改 - console.log('preload/index.js'); + console.log('preload functions'); + trayService.create(); + securityService.create(); + autoUpdaterService.create(); } /** diff --git a/electron/service/os/auto_updater.js b/electron/service/os/auto_updater.js index 7604757..aa66150 100644 --- a/electron/service/os/auto_updater.js +++ b/electron/service/os/auto_updater.js @@ -3,13 +3,13 @@ const { autoUpdater } = require("electron-updater"); const { is } = require('ee-core/utils'); const { logger } = require('ee-core/log'); const { getConfig } = require('ee-core/config'); -const { getMainWindow, setCloseAndQuit } = require('ee-core/electron/window'); +const { getMainWindow, setCloseAndQuit } = require('ee-core/electron'); /** * 自动升级 * @class */ -class AutoUpdater { +class AutoUpdaterService { /** * 创建 @@ -157,7 +157,7 @@ class AutoUpdater { } } -AutoUpdater.toString = () => '[class AutoUpdater]'; +AutoUpdaterService.toString = () => '[class AutoUpdaterService]'; module.exports = { - autoUpdater: new AutoUpdater() + autoUpdaterService: new AutoUpdaterService() }; \ No newline at end of file diff --git a/electron/service/os/security.js b/electron/service/os/security.js new file mode 100644 index 0000000..64155fd --- /dev/null +++ b/electron/service/os/security.js @@ -0,0 +1,33 @@ +'use strict'; + +const { logger } = require('ee-core/log'); +const { app: electronApp } = require('electron'); + +/** + * 安全 + * @class + */ +class SecurityService { + + /** + * 创建 + */ + create () { + logger.info('[security] load'); + const runWithDebug = process.argv.find(function(e){ + let isHasDebug = e.includes("--inspect") || e.includes("--inspect-brk") || e.includes("--remote-debugging-port"); + return isHasDebug; + }) + + // 不允许远程调试 + if (runWithDebug) { + logger.error('[error] Remote debugging is not allowed, runWithDebug:', runWithDebug); + electronApp.quit(); + } + } +} + +SecurityService.toString = () => '[class SecurityService]'; +module.exports = { + securityService: new SecurityService() +}; \ No newline at end of file diff --git a/electron/service/os/tray.js b/electron/service/os/tray.js new file mode 100644 index 0000000..d1aa414 --- /dev/null +++ b/electron/service/os/tray.js @@ -0,0 +1,74 @@ +const { Tray, Menu } = require('electron'); +const path = require('path'); +const { isDev, getBaseDir } = require('ee-core/ps'); +const { logger } = require('ee-core/log'); +const { app: electronApp } = require('electron'); +const { getMainWindow, getCloseAndQuit, setCloseAndQuit } = require('ee-core/electron'); +const { getConfig } = require('ee-core/config'); + +/** + * 托盘 + * @class + */ +class TrayService { + + constructor() { + this.tray = null; + } + + /** + * 创建托盘 + */ + create () { + // todo 开发环境,代码热更新开启时,会导致托盘中有残影 + if (isDev()) return; + logger.info('[addon:tray] load'); + + const cfg = getConfig().customize.tray; + const mainWindow = getMainWindow(); + + // tray icon + const iconPath = path.join(getBaseDir(), cfg.icon); + + // 托盘菜单功能列表 + const trayMenuTemplate = [ + { + label: '显示', + click: function () { + mainWindow.show(); + } + }, + { + label: '退出', + click: function () { + electronApp.quit(); + } + } + ] + + // 设置一个标识,点击关闭,最小化到托盘 + setCloseAndQuit(false); + mainWindow.on('close', (event) => { + if (getCloseAndQuit()) { + return; + } + mainWindow.hide(); + event.preventDefault(); + }); + + // 实例化托盘 + this.tray = new Tray(iconPath); + this.tray.setToolTip(cfg.title); + const contextMenu = Menu.buildFromTemplate(trayMenuTemplate); + this.tray.setContextMenu(contextMenu); + // 左键单击的时候能够显示主窗口 + this.tray.on('click', () => { + mainWindow.show() + }) + } +} + +TrayService.toString = () => '[class TrayService]'; +module.exports = { + trayService: new TrayService() +}; \ No newline at end of file diff --git a/electron/service/os/window.js b/electron/service/os/window.js index f648d94..0ea2e7d 100644 --- a/electron/service/os/window.js +++ b/electron/service/os/window.js @@ -1,9 +1,8 @@ 'use strict'; const path = require('path'); -const { app: electronApp } = require('electron'); const { BrowserWindow, Notification } = require('electron'); -const { getMainWindow } = require('ee-core/electron/window'); +const { getMainWindow } = require('ee-core/electron'); const { isProd, getBaseDir } = require('ee-core/ps'); /**