小调整。

pull/377/head
王良 2024-10-20 22:27:02 +08:00
parent 1a34c1e575
commit b8d5e1b3e2
3 changed files with 39 additions and 38 deletions

View File

@ -23,6 +23,8 @@
"dependencies": { "dependencies": {
"@docmirror/dev-sidecar": "^1.8.8", "@docmirror/dev-sidecar": "^1.8.8",
"@docmirror/mitmproxy": "^1.8.8", "@docmirror/mitmproxy": "^1.8.8",
"@mihomo-party/sysproxy": "^2.0.4",
"@natmri/platform-napi": "0.0.7",
"adm-zip": "^0.5.5", "adm-zip": "^0.5.5",
"ant-design-vue": "^1.6.5", "ant-design-vue": "^1.6.5",
"compressing": "^1.5.1", "compressing": "^1.5.1",
@ -43,9 +45,7 @@
"sass-loader": "^10.0.4", "sass-loader": "^10.0.4",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-json-editor-fix-cn": "^1.4.3", "vue-json-editor-fix-cn": "^1.4.3",
"vue-router": "^3.4.8", "vue-router": "^3.4.8"
"@natmri/platform-napi": "0.0.7",
"@mihomo-party/sysproxy": "^2.0.4"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "^4.5.0", "@vue/cli-plugin-babel": "^4.5.0",
@ -54,9 +54,9 @@
"@vue/eslint-config-standard": "^5.1.2", "@vue/eslint-config-standard": "^5.1.2",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"electron": "^17.4.11", "electron": "^17.4.11",
"electron-builder": "^23.0.3",
"electron-devtools-installer": "^3.1.0", "electron-devtools-installer": "^3.1.0",
"electron-icon-builder": "^2.0.1", "electron-icon-builder": "^2.0.1",
"electron-builder": "^23.0.3",
"eslint": "^6.7.2", "eslint": "^6.7.2",
"eslint-plugin-import": "^2.20.2", "eslint-plugin-import": "^2.20.2",
"eslint-plugin-node": "^11.1.0", "eslint-plugin-node": "^11.1.0",

View File

@ -189,8 +189,9 @@ function createWindow (startHideWindow) {
Menu.setApplicationMenu(null) Menu.setApplicationMenu(null)
win.setMenu(null) win.setMenu(null)
// !!IMPORTANT // !!IMPORTANT
if(isWindows) { if (isWindows) {
powerMonitor.setupMainWindow(win) powerMonitor.setupMainWindow(win)
} }
@ -450,12 +451,13 @@ if (!isFirstInstance) {
} }
powerMonitor.on('shutdown', async (e) => { powerMonitor.on('shutdown', async (e) => {
if(e) if (e) {
e.preventDefault() e.preventDefault()
}
log.info('系统关机,恢复代理设置') log.info('系统关机,恢复代理设置')
if(isWindows) { if (isWindows) {
const Sysproxy = require('@mihomo-party/sysproxy') const Sysproxy = require('@mihomo-party/sysproxy')
Sysproxy.triggerManualProxy(false, "", 0, "") Sysproxy.triggerManualProxy(false, '', 0, '')
} }
await quit() await quit()
}) })

View File

@ -1,36 +1,35 @@
import { powerMonitor as _powerMonitor, BrowserWindow } from 'electron' import { powerMonitor as _powerMonitor } from 'electron'
import { setMainWindowHandle, insertWndProcHook, removeWndProcHook, releaseShutdownBlock, acquireShutdownBlock } from '@natmri/platform-napi'; import { setMainWindowHandle, insertWndProcHook, removeWndProcHook, releaseShutdownBlock, acquireShutdownBlock } from '@natmri/platform-napi'
class PowerMonitor { class PowerMonitor {
constructor() { constructor () {
this.setup = false this.setup = false
this._listeners = [] this._listeners = []
this._shutdownCallback = null this._shutdownCallback = null
} }
/** /**
*
* @param {BrowserWindow} window * @param {BrowserWindow} window
*/ */
setupMainWindow(window) { setupMainWindow (window) {
if(!this.setup) { if (!this.setup) {
setMainWindowHandle(window.getNativeWindowHandle().readBigInt64LE()) setMainWindowHandle(window.getNativeWindowHandle().readBigInt64LE())
this.setup = true this.setup = true
} }
} }
addListener(event, listener) { addListener (event, listener) {
return this.on(event, listener) return this.on(event, listener)
} }
removeListener(event, listener) { removeListener (event, listener) {
return this.off(event, listener) return this.off(event, listener)
} }
removeAllListeners(event) { removeAllListeners (event) {
if(event === 'shutdown' && process.platform === 'win32') { if (event === 'shutdown' && process.platform === 'win32') {
this._listeners = [] this._listeners = []
if(this._shutdownCallback) { if (this._shutdownCallback) {
removeWndProcHook() removeWndProcHook()
releaseShutdownBlock() releaseShutdownBlock()
this._shutdownCallback = null this._shutdownCallback = null
@ -40,15 +39,15 @@ class PowerMonitor {
} }
} }
on(event, listener) { on (event, listener) {
if(event === 'shutdown' && process.platform === 'win32') { if (event === 'shutdown' && process.platform === 'win32') {
if(!this._shutdownCallback) { if (!this._shutdownCallback) {
this._shutdownCallback = async () => { this._shutdownCallback = async () => {
await Promise.all(this._listeners.map((fn) => fn())) await Promise.all(this._listeners.map((fn) => fn()))
releaseShutdownBlock() releaseShutdownBlock()
} }
insertWndProcHook(this._shutdownCallback) insertWndProcHook(this._shutdownCallback)
acquireShutdownBlock("正在停止 DevSidecar 代理") acquireShutdownBlock('正在停止 DevSidecar 代理')
} }
this._listeners.push(listener) this._listeners.push(listener)
} else { } else {
@ -56,50 +55,50 @@ class PowerMonitor {
} }
} }
off(event, listener) { off (event, listener) {
if(event === 'shutdown' && process.platform === 'win32') { if (event === 'shutdown' && process.platform === 'win32') {
this._listeners = this._listeners.filter((fn) => fn !== listener) this._listeners = this._listeners.filter((fn) => fn !== listener)
} else { } else {
return _powerMonitor.off(event, listener) return _powerMonitor.off(event, listener)
} }
} }
once(event, listener) { once (event, listener) {
if(event === 'shutdown' && process.platform === 'win32') { if (event === 'shutdown' && process.platform === 'win32') {
return this.on(event, listener) return this.on(event, listener)
} else { } else {
return _powerMonitor.once(event, listener) return _powerMonitor.once(event, listener)
} }
} }
emit(event, ...args) { emit (event, ...args) {
return _powerMonitor.emit(event, ...args) return _powerMonitor.emit(event, ...args)
} }
eventNames() { eventNames () {
return _powerMonitor.eventNames() return _powerMonitor.eventNames()
} }
getMaxListeners() { getMaxListeners () {
return _powerMonitor.getMaxListeners() return _powerMonitor.getMaxListeners()
} }
listeners(event) { listeners (event) {
return _powerMonitor.listeners(event) return _powerMonitor.listeners(event)
} }
rawListeners(event) { rawListeners (event) {
return _powerMonitor.rawListeners(event) return _powerMonitor.rawListeners(event)
} }
listenerCount(event, listener) { listenerCount (event, listener) {
return _powerMonitor.listenerCount(event, listener) return _powerMonitor.listenerCount(event, listener)
} }
/** /**
* @returns {boolean} * @returns {boolean}
*/ */
get onBatteryPower() { get onBatteryPower () {
return _powerMonitor.onBatteryPower return _powerMonitor.onBatteryPower
} }
@ -107,28 +106,28 @@ class PowerMonitor {
* @param {number} idleThreshold * @param {number} idleThreshold
* @returns {'active'|'idle'|'locked'|'unknown'} * @returns {'active'|'idle'|'locked'|'unknown'}
*/ */
getSystemIdleState(idleThreshold) { getSystemIdleState (idleThreshold) {
return _powerMonitor.getSystemIdleState(idleThreshold) return _powerMonitor.getSystemIdleState(idleThreshold)
} }
/** /**
* @returns {number} * @returns {number}
*/ */
getSystemIdleTime() { getSystemIdleTime () {
return _powerMonitor.getSystemIdleTime() return _powerMonitor.getSystemIdleTime()
} }
/** /**
* @returns {'unknown'|'nominal'|'fair'|'serious'|'critical'} * @returns {'unknown'|'nominal'|'fair'|'serious'|'critical'}
*/ */
getCurrentThermalState() { getCurrentThermalState () {
return _powerMonitor.getCurrentThermalState() return _powerMonitor.getCurrentThermalState()
} }
/** /**
* @returns {boolean} * @returns {boolean}
*/ */
isOnBatteryPower() { isOnBatteryPower () {
return _powerMonitor.isOnBatteryPower() return _powerMonitor.isOnBatteryPower()
} }
} }