diff --git a/packages/geek-auto-start-chat-with-boss/index.mjs b/packages/geek-auto-start-chat-with-boss/index.mjs index 3149193..3a2a7ff 100644 --- a/packages/geek-auto-start-chat-with-boss/index.mjs +++ b/packages/geek-auto-start-chat-with-boss/index.mjs @@ -307,11 +307,15 @@ export async function mainLoop (hooks) { // ;await browser.close() } catch (err) { - browser.close() - browse = null - page = null + closeBrowserWindow() console.error(err) throw err } } + +export async function closeBrowserWindow () { + browser?.close() + browse = null + page = null +} diff --git a/packages/ui/src/main/flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/index.ts b/packages/ui/src/main/flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/index.ts index 0d71968..ad78f5d 100644 --- a/packages/ui/src/main/flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/index.ts +++ b/packages/ui/src/main/flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/index.ts @@ -7,6 +7,7 @@ export enum DOWNLOAD_ERROR_EXIT_CODE { DOWNLOAD_ERROR = 1 } export const checkAndDownloadDependenciesForInit = async () => { + process.on('disconnect', () => app.exit()) app.dock.hide() let pipe: null | net.Socket = null try { diff --git a/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS.ts b/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS.ts index 299163a..b084acc 100644 --- a/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS.ts +++ b/packages/ui/src/main/flow/GEEK_AUTO_START_CHAT_WITH_BOSS.ts @@ -13,7 +13,17 @@ const initPlugins = (hooks) => { new DingtalkPlugin(dingTalkAccessToken).apply(hooks) } +let isParentProcessDisconnect = false + export const runAutoChat = async () => { + const { initPuppeteer, mainLoop, closeBrowserWindow } = await import( + '@geekgeekrun/geek-auto-start-chat-with-boss/index.mjs' + ) + process.on('disconnect', () => { + isParentProcessDisconnect = true + closeBrowserWindow() + app.exit() + }) app.dock.hide() let pipe: null | net.Socket = null try { @@ -27,7 +37,7 @@ export const runAutoChat = async () => { }) + '\r\n' ) try { - await (await import('@geekgeekrun/geek-auto-start-chat-with-boss/index.mjs')).initPuppeteer() + await initPuppeteer() pipe?.write( JSON.stringify({ type: 'PUPPETEER_INITIALIZE_SUCCESSFULLY' @@ -44,7 +54,6 @@ export const runAutoChat = async () => { return } - const mainLoop = (await import('@geekgeekrun/geek-auto-start-chat-with-boss/index.mjs')).mainLoop const hooks = { puppeteerLaunched: new SyncHook(), pageLoaded: new SyncHook(), @@ -61,7 +70,7 @@ export const runAutoChat = async () => { type: 'GEEK_AUTO_START_CHAT_WITH_BOSS_STARTED' //geek-auto-start-chat-with-boss-started }) + '\r\n' ) - while (true) { + while (!([isParentProcessDisconnect].includes(true))) { try { await mainLoop(hooks) } catch (err) { @@ -73,4 +82,5 @@ export const runAutoChat = async () => { // } } } + closeBrowserWindow() } diff --git a/packages/ui/src/main/window/mainWindow.ts b/packages/ui/src/main/window/mainWindow.ts index 6f5c18d..87b460d 100644 --- a/packages/ui/src/main/window/mainWindow.ts +++ b/packages/ui/src/main/window/mainWindow.ts @@ -99,7 +99,7 @@ export function createMainWindow(): void { } subProcessOfPuppeteer = childProcess.spawn(process.argv[0], process.argv.slice(1), { env: subProcessEnv, - stdio: [null, null, null, 'pipe'] + stdio: [null, null, null, 'pipe', 'ipc'] }) console.log(subProcessOfPuppeteer) return new Promise((resolve, reject) => { @@ -151,7 +151,7 @@ export function createMainWindow(): void { process.argv.slice(1), { env: subProcessEnv, - stdio: [null, null, null, 'pipe'] + stdio: [null, null, null, 'pipe', 'ipc'] } ) return new Promise((resolve, reject) => {