| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- const { app: electronApp } = require('electron');
- const Log = require('ee-core/log');
- const Conf = require('ee-core/config');
- /**
- * 唤醒插件
- * @class
- */
- class AwakenAddon {
- constructor() {
- this.protocol = '';
- }
- /**
- * 创建
- */
- create () {
- Log.info('[addon:awaken] load');
- const cfg = Conf.getValue('addons.awaken');
- this.protocol = cfg.protocol;
-
- electronApp.setAsDefaultProtocolClient(this.protocol);
-
- this.handleArgv(process.argv);
- electronApp.on('second-instance', (event, argv) => {
- if (process.platform === 'win32') {
- this.handleArgv(argv)
- }
- })
-
- // 仅用于macOS
- electronApp.on('open-url', (event, urlStr) => {
- this.handleUrl(urlStr)
- })
- }
- /**
- * 参数处理
- */
- handleArgv(argv) {
- const offset = electronApp.isPackaged ? 1 : 2;
- const url = argv.find((arg, i) => i >= offset && arg.startsWith(this.protocol));
- this.handleUrl(url)
- }
- /**
- * url解析
- */
- handleUrl(awakeUrlStr) {
- if (!awakeUrlStr || awakeUrlStr.length === 0) {
- return
- }
- const {hostname, pathname, search} = new URL(awakeUrlStr);
- let awakeUrlInfo = {
- urlStr: awakeUrlStr,
- urlHost: hostname,
- urlPath: pathname,
- urlParams: search && search.slice(1)
- }
- Log.info('[addon:awaken] awakeUrlInfo:', awakeUrlInfo);
- }
- }
- AwakenAddon.toString = () => '[class AwakenAddon]';
- module.exports = AwakenAddon;
|