From 492538e6631bc76792b609dc9e9c17acddad6588 Mon Sep 17 00:00:00 2001 From: geekgeekrun Date: Thu, 15 Jan 2026 17:20:10 +0800 Subject: [PATCH] don't make browser to be like windows; check if page closed before push screenshot --- .../geek-auto-start-chat-with-boss/index.mjs | 2 +- .../GEEK_AUTO_START_CHAT_WITH_BOSS_MAIN/index.ts | 16 ++-------------- .../flow/READ_NO_REPLY_AUTO_REMINDER/index.ts | 15 ++------------- packages/ui/src/main/utils/screenshot.ts | 5 +++++ packages/ui/src/main/utils/worker.ts | 14 ++++++++++++++ 5 files changed, 24 insertions(+), 28 deletions(-) create mode 100644 packages/ui/src/main/utils/worker.ts diff --git a/packages/geek-auto-start-chat-with-boss/index.mjs b/packages/geek-auto-start-chat-with-boss/index.mjs index 4a295cc..b1bac53 100644 --- a/packages/geek-auto-start-chat-with-boss/index.mjs +++ b/packages/geek-auto-start-chat-with-boss/index.mjs @@ -91,7 +91,7 @@ export async function initPuppeteer () { AnonymizeUaPlugin = importResult[3].default puppeteer.use(StealthPlugin()) puppeteer.use(LaodengPlugin()) - puppeteer.use(AnonymizeUaPlugin()) + puppeteer.use(AnonymizeUaPlugin({ makeWindows: false })) return { puppeteer, StealthPlugin, diff --git a/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS_MAIN/index.ts b/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS_MAIN/index.ts index 933ae91..38f09e6 100644 --- a/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS_MAIN/index.ts +++ b/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS_MAIN/index.ts @@ -16,8 +16,9 @@ import attachListenerForKillSelfOnParentExited from '../../utils/attachListenerF import SqlitePluginModule from '@geekgeekrun/sqlite-plugin' import gtag from '../../utils/gtag' import GtagPlugin from '../../utils/gtag/GtagPlugin' -import { connectToDaemon, sendToDaemon } from '../OPEN_SETTING_WINDOW/connect-to-daemon' +import { connectToDaemon } from '../OPEN_SETTING_WINDOW/connect-to-daemon' import { PeriodPushCurrentPageScreenshotPlugin } from '../../utils/screenshot' +import { checkShouldExit } from '../../utils/worker' const { default: SqlitePlugin } = SqlitePluginModule const rerunInterval = (() => { @@ -38,19 +39,6 @@ const initPlugins = (hooks) => { new PeriodPushCurrentPageScreenshotPlugin().apply(hooks) } -async function checkShouldExit () { - const shouldExitResponse = await sendToDaemon( - { - type: 'check-should-exit', - workerId: process.env.GEEKGEEKRUND_WORKER_ID, - }, - { - needCallback: true - } - ) - return shouldExitResponse?.shouldExit -} - const runAutoChat = async () => { const { initPuppeteer, mainLoop, closeBrowserWindow, autoStartChatEventBus } = await import( '@geekgeekrun/geek-auto-start-chat-with-boss/index.mjs' diff --git a/packages/ui/src/main/flow/READ_NO_REPLY_AUTO_REMINDER/index.ts b/packages/ui/src/main/flow/READ_NO_REPLY_AUTO_REMINDER/index.ts index c5f2707..f185d49 100644 --- a/packages/ui/src/main/flow/READ_NO_REPLY_AUTO_REMINDER/index.ts +++ b/packages/ui/src/main/flow/READ_NO_REPLY_AUTO_REMINDER/index.ts @@ -24,8 +24,9 @@ import gtag from '../../utils/gtag' import { JobHireStatus } from '@geekgeekrun/sqlite-plugin/dist/enums'; import dayjs from 'dayjs' import cheerio from 'cheerio' -import { connectToDaemon, sendToDaemon } from '../OPEN_SETTING_WINDOW/connect-to-daemon' +import { connectToDaemon } from '../OPEN_SETTING_WINDOW/connect-to-daemon' import { pushCurrentPageScreenshot, SCREENSHOT_INTERVAL_MS } from '../../utils/screenshot' +import { checkShouldExit } from '../../utils/worker' const throttleIntervalMinutes = readConfigFile('boss.json').autoReminder?.throttleIntervalMinutes ?? 10 @@ -462,18 +463,6 @@ const rerunInterval = (() => { return v })() -async function checkShouldExit () { - const shouldExitResponse = await sendToDaemon( - { - type: 'check-should-exit', - workerId: process.env.GEEKGEEKRUND_WORKER_ID, - }, - { - needCallback: true - } - ) - return shouldExitResponse?.shouldExit -} export async function runEntry() { connectToDaemon() app.dock?.hide() diff --git a/packages/ui/src/main/utils/screenshot.ts b/packages/ui/src/main/utils/screenshot.ts index f8b0a2a..fd84664 100644 --- a/packages/ui/src/main/utils/screenshot.ts +++ b/packages/ui/src/main/utils/screenshot.ts @@ -1,4 +1,5 @@ import { sendToDaemon } from "../flow/OPEN_SETTING_WINDOW/connect-to-daemon" +import { checkShouldExit } from "./worker" export const SCREENSHOT_INTERVAL_MS = 2500 @@ -43,6 +44,10 @@ export class PeriodPushCurrentPageScreenshotPlugin { if (page.isClosed()) { return } + const shouldExit = await checkShouldExit() + if (shouldExit) { + return + } await pushCurrentPageScreenshot(page) setTimeout(periodPushCurrentPageScreenshot, SCREENSHOT_INTERVAL_MS) } diff --git a/packages/ui/src/main/utils/worker.ts b/packages/ui/src/main/utils/worker.ts new file mode 100644 index 0000000..2b009c0 --- /dev/null +++ b/packages/ui/src/main/utils/worker.ts @@ -0,0 +1,14 @@ +import { sendToDaemon } from "../flow/OPEN_SETTING_WINDOW/connect-to-daemon" + +export async function checkShouldExit () { + const shouldExitResponse = await sendToDaemon( + { + type: 'check-should-exit', + workerId: process.env.GEEKGEEKRUND_WORKER_ID, + }, + { + needCallback: true + } + ) + return shouldExitResponse?.shouldExit + } \ No newline at end of file