From fd9b1e4cdca99e928af7bc957d1dab2f88e2d0c8 Mon Sep 17 00:00:00 2001 From: geekgeekrun Date: Thu, 28 Mar 2024 01:58:41 +0800 Subject: [PATCH] add power saver blocker --- .../GEEK_AUTO_START_CHAT_WITH_BOSS_DAEMON/index.ts | 4 ++++ .../power-saver-blocker.ts | 10 ++++++++++ 2 files changed, 14 insertions(+) create mode 100644 packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS_DAEMON/power-saver-blocker.ts diff --git a/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS_DAEMON/index.ts b/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS_DAEMON/index.ts index a98aae4..5d286f0 100644 --- a/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS_DAEMON/index.ts +++ b/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS_DAEMON/index.ts @@ -5,6 +5,7 @@ import { app } from 'electron' import fs, { WriteStream } from 'node:fs' import { pipeWriteRegardlessError } from '../utils/pipe' import * as JSONStream from 'JSONStream' +import { initPowerSaveBlocker } from './power-saver-blocker' const rerunInterval = (() => { let v = Number(process.env.MAIN_BOSSGEEKGO_RERUN_INTERVAL) @@ -89,6 +90,9 @@ export function runAutoChatWithDaemon() { app.exit(1) } + const disposePowerSaveBlocker = initPowerSaveBlocker() + app.once('quit', disposePowerSaveBlocker) + const pipeForRead: fs.ReadStream = fs.createReadStream(null, { fd: 3 }) const pipeForReadWithJsonParser = pipeForRead.pipe(JSONStream.parse()) pipeForReadWithJsonParser?.on('data', function waitForCanRun(data) { diff --git a/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS_DAEMON/power-saver-blocker.ts b/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS_DAEMON/power-saver-blocker.ts new file mode 100644 index 0000000..f8940b5 --- /dev/null +++ b/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS_DAEMON/power-saver-blocker.ts @@ -0,0 +1,10 @@ +import { powerSaveBlocker } from 'electron' + +export const initPowerSaveBlocker = ( + type: 'prevent-app-suspension' | 'prevent-display-sleep' = 'prevent-app-suspension' +) => { + const id = powerSaveBlocker.start(type) + return function disposePowerSaveBlocker() { + return powerSaveBlocker.stop(id) + } +}