From c71ffcec1c36d7e0c83ffba1617fbbcd951ce6eb Mon Sep 17 00:00:00 2001 From: Simon <10131203+gaomeng1900@users.noreply.github.com> Date: Tue, 10 Feb 2026 21:59:58 +0800 Subject: [PATCH] refactor(ext): tidy up background code --- .../src/agent/TabsController.background.ts | 16 ++++++++ .../extension/src/entrypoints/background.ts | 40 +++++++------------ 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/packages/extension/src/agent/TabsController.background.ts b/packages/extension/src/agent/TabsController.background.ts index aec87d8..2624082 100644 --- a/packages/extension/src/agent/TabsController.background.ts +++ b/packages/extension/src/agent/TabsController.background.ts @@ -105,3 +105,19 @@ export function handleTabControlMessage( return } } + +export function setupTabChangeEvents() { + chrome.tabs.onCreated.addListener((tab) => { + console.debug('[Background] Tab created', tab) + chrome.runtime.sendMessage({ type: 'TAB_CHANGE', action: 'created', payload: { tab } }) + }) + + chrome.tabs.onRemoved.addListener((tabId, removeInfo) => { + console.debug('[Background] Tab removed', tabId, removeInfo) + chrome.runtime.sendMessage({ + type: 'TAB_CHANGE', + action: 'removed', + payload: { tabId, removeInfo }, + }) + }) +} diff --git a/packages/extension/src/entrypoints/background.ts b/packages/extension/src/entrypoints/background.ts index bec06d2..705c8a4 100644 --- a/packages/extension/src/entrypoints/background.ts +++ b/packages/extension/src/entrypoints/background.ts @@ -1,20 +1,5 @@ import { handlePageControlMessage } from '@/agent/RemotePageController.background' -import { handleTabControlMessage } from '@/agent/TabsController.background' - -chrome.runtime.onMessage.addListener((message, sender, sendResponse): true | undefined => { - if (message.type === 'TAB_CONTROL') { - return handleTabControlMessage(message, sender, sendResponse) - } else if (message.type === 'PAGE_CONTROL') { - return handlePageControlMessage(message, sender, sendResponse) - } else { - sendResponse({ error: 'Unknown message type' }) - return - } -}) - -// ============================================================================ -// Extension Setup -// ============================================================================ +import { handleTabControlMessage, setupTabChangeEvents } from '@/agent/TabsController.background' export default defineBackground(() => { console.log('[Background] Service Worker started') @@ -32,17 +17,20 @@ export default defineBackground(() => { chrome.sidePanel.setPanelBehavior({ openPanelOnActionClick: true }).catch(() => {}) - // Tab change events + // message proxy - chrome.tabs.onCreated.addListener((tab) => { - chrome.runtime.sendMessage({ type: 'TAB_CHANGE', action: 'created', payload: { tab } }) + chrome.runtime.onMessage.addListener((message, sender, sendResponse): true | undefined => { + if (message.type === 'TAB_CONTROL') { + return handleTabControlMessage(message, sender, sendResponse) + } else if (message.type === 'PAGE_CONTROL') { + return handlePageControlMessage(message, sender, sendResponse) + } else { + sendResponse({ error: 'Unknown message type' }) + return + } }) - chrome.tabs.onRemoved.addListener((tabId, removeInfo) => { - chrome.runtime.sendMessage({ - type: 'TAB_CHANGE', - action: 'removed', - payload: { tabId, removeInfo }, - }) - }) + // tab change events + + setupTabChangeEvents() })