2026-01-27 17:21:32 +08:00
|
|
|
import { handlePageControlMessage } from '@/agent/RemotePageController.background'
|
|
|
|
|
import { handleTabControlMessage } from '@/agent/TabsController.background'
|
|
|
|
|
|
|
|
|
|
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
|
|
|
|
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' })
|
2026-01-28 14:13:28 +08:00
|
|
|
return
|
2026-01-27 17:21:32 +08:00
|
|
|
}
|
2026-01-24 19:37:46 +08:00
|
|
|
})
|
|
|
|
|
|
2026-01-24 19:29:27 +08:00
|
|
|
// ============================================================================
|
|
|
|
|
// Extension Setup
|
|
|
|
|
// ============================================================================
|
2026-01-21 18:46:50 +08:00
|
|
|
|
2026-01-24 19:29:27 +08:00
|
|
|
export default defineBackground(() => {
|
2026-01-26 21:03:51 +08:00
|
|
|
console.log('[Background] Service Worker started')
|
2026-01-21 18:46:50 +08:00
|
|
|
|
2026-01-28 23:03:03 +08:00
|
|
|
// generate user auth token
|
|
|
|
|
|
2026-01-28 19:47:15 +08:00
|
|
|
chrome.storage.local.get('PageAgentExtUserAuthToken').then((result) => {
|
|
|
|
|
if (result.PageAgentExtUserAuthToken) return
|
|
|
|
|
|
|
|
|
|
const userAuthToken = crypto.randomUUID()
|
|
|
|
|
chrome.storage.local.set({ PageAgentExtUserAuthToken: userAuthToken })
|
|
|
|
|
})
|
|
|
|
|
|
2026-01-28 23:03:03 +08:00
|
|
|
// setup
|
|
|
|
|
|
2026-01-26 21:03:51 +08:00
|
|
|
chrome.sidePanel.setPanelBehavior({ openPanelOnActionClick: true }).catch(() => {})
|
2026-01-28 23:03:03 +08:00
|
|
|
|
|
|
|
|
// Tab change events
|
|
|
|
|
|
|
|
|
|
chrome.tabs.onCreated.addListener((tab) => {
|
|
|
|
|
chrome.runtime.sendMessage({ type: 'TAB_CHANGE', action: 'created', payload: { tab } })
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
chrome.tabs.onRemoved.addListener((tabId, removeInfo) => {
|
|
|
|
|
chrome.runtime.sendMessage({
|
|
|
|
|
type: 'TAB_CHANGE',
|
|
|
|
|
action: 'removed',
|
|
|
|
|
payload: { tabId, removeInfo },
|
|
|
|
|
})
|
|
|
|
|
})
|
2026-01-24 19:29:27 +08:00
|
|
|
})
|