fix: Windows操作系统,开着DS应用重启电脑后无法上网的问题说明 #109
parent
c68e504e69
commit
10de2465dd
|
@ -43,7 +43,8 @@
|
||||||
"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.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vue/cli-plugin-babel": "^4.5.0",
|
"@vue/cli-plugin-babel": "^4.5.0",
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
'use strict'
|
'use strict'
|
||||||
/* global __static */
|
/* global __static */
|
||||||
import path from 'path'
|
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 { createProtocol } from 'vue-cli-plugin-electron-builder/lib'
|
||||||
import backend from './bridge/backend'
|
import backend from './bridge/backend'
|
||||||
import DevSidecar from '@docmirror/dev-sidecar'
|
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