From 1c28d1759f2ef4d643654e55c177d2f1a728e3b3 Mon Sep 17 00:00:00 2001 From: geekgeekrun Date: Wed, 20 Nov 2024 01:07:02 +0800 Subject: [PATCH] save boss info(except encryptCompanyId) when it not exist when find some boss in chat list --- .../src/main/flow/LAUNCH_BOSS_SITE/index.ts | 21 +++++++++++++++++-- .../flow/READ_NO_REPLY_AUTO_REMINDER/index.ts | 21 ++++++++++++++++++- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/packages/ui/src/main/flow/LAUNCH_BOSS_SITE/index.ts b/packages/ui/src/main/flow/LAUNCH_BOSS_SITE/index.ts index 301e07c..4e35ebc 100644 --- a/packages/ui/src/main/flow/LAUNCH_BOSS_SITE/index.ts +++ b/packages/ui/src/main/flow/LAUNCH_BOSS_SITE/index.ts @@ -28,6 +28,7 @@ import { ChatStartupFrom } from '@geekgeekrun/sqlite-plugin/dist/entity/ChatStar import gtag from '../../utils/gtag' import attachListenerForKillSelfOnParentExited from '../../utils/attachListenerForKillSelfOnParentExited' import { type ChatMessageRecord } from '@geekgeekrun/sqlite-plugin/src/entity/ChatMessageRecord' +import { BossInfo } from '@geekgeekrun/sqlite-plugin/dist/entity/BossInfo' const __dirname = url.fileURLToPath(new URL('.', import.meta.url)) const isRunFromUi = Boolean(process.env.MAIN_BOSSGEEKGO_UI_RUN_MODE) @@ -180,9 +181,25 @@ const attachRequestsListener = async (target: Target) => { const url = new URL(request) const encryptBossIdInAddFriendUrl = url.searchParams.get('bossId') - const bossInfo = await page.evaluate( + const bossInfo: any = await page.evaluate( 'document.querySelector(".chat-conversation").__vue__.bossInfo$' ) + const ds = await dbInitPromise + // save boss info + const bossInfoRepository = ds.getRepository(BossInfo) + let targetBossInfo = await bossInfoRepository.findOneBy({ + encryptBossId: bossInfo.encryptBossId + }) + if (!targetBossInfo) { + targetBossInfo = new BossInfo() + Object.assign(targetBossInfo, { + encryptBossId: bossInfo.encryptBossId, + name: bossInfo.name, + title: bossInfo.title, + date: new Date() + }) + await bossInfoRepository.save(targetBossInfo) + } if (encryptBossIdInAddFriendUrl !== bossInfo.encryptBossId) { return } @@ -210,7 +227,7 @@ const attachRequestsListener = async (target: Target) => { return mappedItem }) - await saveChatMessageRecord(await dbInitPromise, chatRecordList) + await saveChatMessageRecord(ds, chatRecordList) } }) 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 b2cc8f2..f09f029 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 @@ -12,6 +12,7 @@ import { saveChatMessageRecord } from '@geekgeekrun/sqlite-plugin/dist/handlers' import { writeStorageFile } from '@geekgeekrun/geek-auto-start-chat-with-boss/runtime-file-utils.mjs' import * as fs from 'fs' import { pipeWriteRegardlessError } from '../utils/pipe' +import { BossInfo } from '@geekgeekrun/sqlite-plugin/dist/entity/BossInfo' const dbInitPromise = initDb(getPublicDbFilePath()) @@ -26,6 +27,24 @@ async function saveCurrentChatRecord(page) { const bossInfo = await page.evaluate( 'document.querySelector(".chat-conversation").__vue__.bossInfo$' ) + + const ds = await dbInitPromise + // save boss info + const bossInfoRepository = ds.getRepository(BossInfo) + let targetBossInfo = await bossInfoRepository.findOneBy({ + encryptBossId: bossInfo.encryptBossId + }) + if (!targetBossInfo) { + targetBossInfo = new BossInfo() + Object.assign(targetBossInfo, { + encryptBossId: bossInfo.encryptBossId, + name: bossInfo.name, + title: bossInfo.title, + date: new Date() + }) + await bossInfoRepository.save(targetBossInfo) + } + const rawChatRecordList = ( await page.evaluate( @@ -60,7 +79,7 @@ async function saveCurrentChatRecord(page) { return mappedItem }) - await saveChatMessageRecord(await dbInitPromise, chatRecordList) + await saveChatMessageRecord(ds, chatRecordList) } let browser: null | Browser = null