36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import { handleBackgroundCommand, handleInstalled, handleStartup, handleWindowRemoved } from './service';
|
|
import type { BackgroundCommand } from './types';
|
|
|
|
chrome.runtime.onInstalled.addListener(() => {
|
|
void handleInstalled();
|
|
});
|
|
|
|
chrome.runtime.onStartup.addListener(() => {
|
|
void handleStartup();
|
|
});
|
|
|
|
chrome.runtime.onMessage.addListener((message: BackgroundCommand, _sender, sendResponse) => {
|
|
void handleBackgroundMessage(message, sendResponse);
|
|
return true;
|
|
});
|
|
|
|
chrome.windows.onRemoved.addListener((windowId) => {
|
|
void handleWindowRemoved(windowId);
|
|
});
|
|
|
|
/**
|
|
* 统一包装后台消息处理,确保异步错误能回给调用方。
|
|
*/
|
|
async function handleBackgroundMessage(
|
|
message: BackgroundCommand,
|
|
sendResponse: (response?: unknown) => void,
|
|
) {
|
|
try {
|
|
const result = await handleBackgroundCommand(message);
|
|
sendResponse(result);
|
|
} catch (error: unknown) {
|
|
const messageText = error instanceof Error ? error.message : 'Unknown error';
|
|
sendResponse({ ok: false, error: messageText });
|
|
}
|
|
}
|