diff --git a/packages/launch-bosszhipin-login-page-with-preload-extension/extensions/EditThisCookie.zip b/packages/launch-bosszhipin-login-page-with-preload-extension/extensions/EditThisCookie.zip index d817ee9..3f8724d 100644 Binary files a/packages/launch-bosszhipin-login-page-with-preload-extension/extensions/EditThisCookie.zip and b/packages/launch-bosszhipin-login-page-with-preload-extension/extensions/EditThisCookie.zip differ diff --git a/packages/launch-bosszhipin-login-page-with-preload-extension/index.mjs b/packages/launch-bosszhipin-login-page-with-preload-extension/index.mjs index 7bad52f..cecd3cd 100644 --- a/packages/launch-bosszhipin-login-page-with-preload-extension/index.mjs +++ b/packages/launch-bosszhipin-login-page-with-preload-extension/index.mjs @@ -6,68 +6,28 @@ import { sleep, sleepWithRandomDelay } from '@geekgeekrun/utils/sleep.mjs' -import extractZip from 'extract-zip' import { blockNavigation } from '@geekgeekrun/utils/puppeteer/block-navigation.mjs' import { writeStorageFile } from '@geekgeekrun/geek-auto-start-chat-with-boss/runtime-file-utils.mjs' -import fs from 'node:fs' -import os from 'node:os' -import path from 'node:path'; import JSON5 from 'json5' import url from 'url'; -import packageJson from './package.json' assert {type: 'json'} +import { + runtimeFolderPath, + ensureEditThisCookie, + editThisCookieExtensionPath, + isRunFromUi, +} from './utils.mjs' import { EventEmitter } from 'node:events' export const loginEventBus = new EventEmitter() const __dirname = url.fileURLToPath(new URL('.', import.meta.url)) -const isRunFromUi = Boolean(process.env.MAIN_BOSSGEEKGO_UI_RUN_MODE) -const isUiDev = process.env.NODE_ENV === 'development' - -const runtimeFolderPath = path.join(os.homedir(), '.geekgeekrun') -const extensionDir = path.join( - runtimeFolderPath, - 'chrome-extensions' -) -if (!fs.existsSync( - runtimeFolderPath -)) { - fs.mkdirSync(runtimeFolderPath) -} -if (!fs.existsSync(extensionDir)) { - fs.mkdirSync(extensionDir) -} -const editThisCookieExtensionPath = path.join(extensionDir, 'EditThisCookie') - -let editThisCookieZipPath -async function getEditThisCookieZipPath () { - if (editThisCookieZipPath) { - return editThisCookieZipPath - } - if (isRunFromUi) { - const { app } = await import('electron') - editThisCookieZipPath = path.join(app.getAppPath(), './node_modules', packageJson.name, 'extensions', 'EditThisCookie.zip') - } else { - editThisCookieZipPath = path.join(__dirname, 'extensions', 'EditThisCookie.zip') - } - return editThisCookieZipPath -} export async function main() { - if (!fs.existsSync( - path.join(editThisCookieExtensionPath, 'manifest.json') - )) { - await extractZip( - await getEditThisCookieZipPath(), - { - dir: extensionDir - } - ) - } - + await ensureEditThisCookie() const { puppeteer } = await initPuppeteer() const browser = await puppeteer.launch({ headless: false, diff --git a/packages/launch-bosszhipin-login-page-with-preload-extension/utils.mjs b/packages/launch-bosszhipin-login-page-with-preload-extension/utils.mjs new file mode 100644 index 0000000..da1f6f8 --- /dev/null +++ b/packages/launch-bosszhipin-login-page-with-preload-extension/utils.mjs @@ -0,0 +1,82 @@ +import path from 'node:path'; +import fs from 'node:fs' +import os from 'node:os' +import extractZip from 'extract-zip' +import packageJson from './package.json' assert {type: 'json'} + +export const isRunFromUi = Boolean(process.env.MAIN_BOSSGEEKGO_UI_RUN_MODE) +const isUiDev = process.env.NODE_ENV === 'development' + +export const runtimeFolderPath = path.join(os.homedir(), '.geekgeekrun') + +const extensionDir = path.join( + runtimeFolderPath, + 'chrome-extensions' +) +if (!fs.existsSync( + runtimeFolderPath +)) { + fs.mkdirSync(runtimeFolderPath) +} +if (!fs.existsSync(extensionDir)) { + fs.mkdirSync(extensionDir) +} +export const editThisCookieExtensionPath = path.join(extensionDir, 'EditThisCookie') + +let editThisCookieZipPath +async function getEditThisCookieZipPath () { + if (editThisCookieZipPath) { + return editThisCookieZipPath + } + if (isRunFromUi) { + const { app } = await import('electron') + editThisCookieZipPath = path.join(app.getAppPath(), './node_modules', packageJson.name, 'extensions', 'EditThisCookie.zip') + } else { + editThisCookieZipPath = path.join(__dirname, 'extensions', 'EditThisCookie.zip') + } + return editThisCookieZipPath +} + +export async function ensureEditThisCookie () { + let isNeedExtractEditThisCookie = false + const manifestFilePath = path.join(editThisCookieExtensionPath, 'manifest.json') + if (!fs.existsSync( + manifestFilePath + )) { + isNeedExtractEditThisCookie = true + } else { + let manifest + try { + manifest = JSON.parse(fs.readFileSync(manifestFilePath, { encoding: 'utf-8' })) + if (!manifest.manifest_version || manifest.manifest_version <= 2) { + isNeedExtractEditThisCookie = true + } + } + catch { + console.log(`未能获取到文件内容`) + isNeedExtractEditThisCookie = true + } + } + + if (isNeedExtractEditThisCookie) { + if ( + fs.existsSync( + editThisCookieExtensionPath + ) + ) { + fs.rmSync( + editThisCookieExtensionPath, + { + recursive: true, + force: true + } + ) + } + await extractZip( + await getEditThisCookieZipPath(), + { + dir: extensionDir + } + ) + } +} \ No newline at end of file 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 ff97e1c..4969cd1 100644 --- a/packages/ui/src/main/flow/LAUNCH_BOSS_SITE/index.ts +++ b/packages/ui/src/main/flow/LAUNCH_BOSS_SITE/index.ts @@ -1,6 +1,5 @@ import { app } from 'electron' import { initPuppeteer } from '@geekgeekrun/geek-auto-start-chat-with-boss/index.mjs' -import extractZip from 'extract-zip' import { readStorageFile, writeStorageFile @@ -17,10 +16,6 @@ import { getPublicDbFilePath } from '@geekgeekrun/geek-auto-start-chat-with-boss import { MarkAsNotSuitReason } from '@geekgeekrun/sqlite-plugin/dist/enums' import fs from 'node:fs' -import os from 'node:os' -import path from 'node:path' -import url from 'url' -import packageJson from '@geekgeekrun/launch-bosszhipin-login-page-with-preload-extension/package.json' assert { type: 'json' } import { Target } from 'puppeteer' import { pipeWriteRegardlessError } from '../utils/pipe' import * as JSONStream from 'JSONStream' @@ -31,38 +26,11 @@ import { type ChatMessageRecord } from '@geekgeekrun/sqlite-plugin/src/entity/Ch import { BossInfo } from '@geekgeekrun/sqlite-plugin/dist/entity/BossInfo' import { messageForSaveFilter } from '../../../common/utils/chat-list' -const __dirname = url.fileURLToPath(new URL('.', import.meta.url)) -const isRunFromUi = Boolean(process.env.MAIN_BOSSGEEKGO_UI_RUN_MODE) +import { + ensureEditThisCookie, + editThisCookieExtensionPath +} from '@geekgeekrun/launch-bosszhipin-login-page-with-preload-extension/utils.mjs' -const runtimeFolderPath = path.join(os.homedir(), '.geekgeekrun') -const extensionDir = path.join(runtimeFolderPath, 'chrome-extensions') -if (!fs.existsSync(runtimeFolderPath)) { - fs.mkdirSync(runtimeFolderPath) -} -if (!fs.existsSync(extensionDir)) { - fs.mkdirSync(extensionDir) -} -const editThisCookieExtensionPath = path.join(extensionDir, 'EditThisCookie') - -let editThisCookieZipPath -async function getEditThisCookieZipPath() { - if (editThisCookieZipPath) { - return editThisCookieZipPath - } - if (isRunFromUi) { - const { app } = await import('electron') - editThisCookieZipPath = path.join( - app.getAppPath(), - './node_modules', - packageJson.name, - 'extensions', - 'EditThisCookie.zip' - ) - } else { - editThisCookieZipPath = path.join(__dirname, 'extensions', 'EditThisCookie.zip') - } - return editThisCookieZipPath -} const dbInitPromise = initDb(getPublicDbFilePath()) const attachRequestsListener = async (target: Target) => { @@ -247,12 +215,7 @@ const attachRequestsListener = async (target: Target) => { export async function launchBossSite() { app.dock?.hide() - if (!fs.existsSync(path.join(editThisCookieExtensionPath, 'manifest.json'))) { - await extractZip(await getEditThisCookieZipPath(), { - dir: extensionDir - }) - } - + await ensureEditThisCookie() const bossCookies = readStorageFile('boss-cookies.json') const bossLocalStorage = readStorageFile('boss-local-storage.json')