fix: Windows操作系统,开着DS应用重启电脑后无法上网的问题说明 #109
parent
c68e504e69
commit
10de2465dd
|
@ -43,7 +43,8 @@
|
|||
"sass-loader": "^10.0.4",
|
||||
"vue": "^2.6.11",
|
||||
"vue-json-editor-fix-cn": "^1.4.3",
|
||||
"vue-router": "^3.4.8"
|
||||
"vue-router": "^3.4.8",
|
||||
"@natmri/platform-napi": "0.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "^4.5.0",
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
'use strict'
|
||||
/* global __static */
|
||||
import path from 'path'
|
||||
import { app, protocol, BrowserWindow, Menu, Tray, ipcMain, dialog, powerMonitor, nativeImage, nativeTheme, globalShortcut } from 'electron'
|
||||
import { app, protocol, BrowserWindow, Menu, Tray, ipcMain, dialog, nativeImage, nativeTheme, globalShortcut } from 'electron'
|
||||
import { powerMonitor } from './background/powerMonitor'
|
||||
import { createProtocol } from 'vue-cli-plugin-electron-builder/lib'
|
||||
import backend from './bridge/backend'
|
||||
import DevSidecar from '@docmirror/dev-sidecar'
|
||||
|
|
|
@ -0,0 +1,120 @@
|
|||
import { powerMonitor as _powerMonitor } from 'electron/main'
|
||||
import { createShutdownBlocker, destroyShutdownBlocker } from '@natmri/platform-napi'
|
||||
|
||||
class PowerMonitor {
|
||||
_listeners = []
|
||||
_shutdownCallback = null
|
||||
|
||||
addListener(event, listener) {
|
||||
return this.on(event, listener)
|
||||
}
|
||||
|
||||
removeListener(event, listener) {
|
||||
return this.off(event, listener)
|
||||
}
|
||||
|
||||
removeAllListeners(event) {
|
||||
if(event === 'shutdown' && process.platform === 'win32') {
|
||||
this._listeners = []
|
||||
if(this._shutdownCallback) {
|
||||
destroyShutdownBlocker()
|
||||
this._shutdownCallback = null
|
||||
}
|
||||
} else {
|
||||
return _powerMonitor.removeAllListeners(event)
|
||||
}
|
||||
}
|
||||
|
||||
on(event, listener) {
|
||||
if(event === 'shutdown' && process.platform === 'win32') {
|
||||
if(!this._shutdownCallback) {
|
||||
this._shutdownCallback = async () => {
|
||||
await Promise.all(this._listeners.map((fn) => fn()))
|
||||
destroyShutdownBlocker()
|
||||
}
|
||||
createShutdownBlocker("正在停止 DevSidecar 代理", this._shutdownCallback)
|
||||
}
|
||||
this._listeners.push(listener)
|
||||
} else {
|
||||
return _powerMonitor.on(event, listener)
|
||||
}
|
||||
}
|
||||
|
||||
off(event, listener) {
|
||||
if(event === 'shutdown' && process.platform === 'win32') {
|
||||
this._listeners = this._listeners.filter((fn) => fn !== listener)
|
||||
} else {
|
||||
return _powerMonitor.off(event, listener)
|
||||
}
|
||||
}
|
||||
|
||||
once(event, listener) {
|
||||
if(event === 'shutdown' && process.platform === 'win32') {
|
||||
|
||||
} else {
|
||||
return _powerMonitor.once(event, listener)
|
||||
}
|
||||
}
|
||||
|
||||
emit(event, ...args) {
|
||||
return _powerMonitor.emit(event, ...args)
|
||||
}
|
||||
|
||||
eventNames() {
|
||||
return _powerMonitor.eventNames()
|
||||
}
|
||||
|
||||
getMaxListeners() {
|
||||
return _powerMonitor.getMaxListeners()
|
||||
}
|
||||
|
||||
listeners(event) {
|
||||
return _powerMonitor.listeners(event)
|
||||
}
|
||||
|
||||
rawListeners(event) {
|
||||
return _powerMonitor.rawListeners(event)
|
||||
}
|
||||
|
||||
listenerCount(event, listener) {
|
||||
return _powerMonitor.listenerCount(event, listener)
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {boolean}
|
||||
*/
|
||||
get onBatteryPower() {
|
||||
return _powerMonitor.onBatteryPower
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {number} idleThreshold
|
||||
* @returns {'active'|'idle'|'locked'|'unknown'}
|
||||
*/
|
||||
getSystemIdleState(idleThreshold) {
|
||||
return _powerMonitor.getSystemIdleState(idleThreshold)
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {number}
|
||||
*/
|
||||
getSystemIdleTime() {
|
||||
return _powerMonitor.getSystemIdleTime()
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {'unknown'|'nominal'|'fair'|'serious'|'critical'}
|
||||
*/
|
||||
getCurrentThermalState() {
|
||||
return _powerMonitor.getCurrentThermalState()
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {boolean}
|
||||
*/
|
||||
isOnBatteryPower() {
|
||||
return _powerMonitor.isOnBatteryPower()
|
||||
}
|
||||
}
|
||||
|
||||
export const powerMonitor = new PowerMonitor()
|
Loading…
Reference in New Issue