import { trackError } from "@/features/analytics"; import { GraphicsStorage } from "@/models/CollectionModels"; import { defineExtensionMessaging, ExtensionMessagingConfig, ExtensionMessenger, ExtensionSendMessageArgs, GetDataType, GetReturnType } from "@webext-core/messaging"; type ProtocolMap = { addThumbnail(data: { url: string; thumbnail: string; }): void; getGraphicsCache(): GraphicsStorage; refreshCollections(): void; }; function defineMessaging(config?: ExtensionMessagingConfig): ExtensionMessenger { const { onMessage, sendMessage, removeAllListeners }: ExtensionMessenger = defineExtensionMessaging(config); return { onMessage, removeAllListeners, async sendMessage( type: TType, data: GetDataType, ...args: ExtensionSendMessageArgs ): Promise> { try { return await sendMessage(type, data, ...args); } catch (ex) { console.error(ex); trackError("messaging_error", ex as Error); return undefined!; } } }; } export const { onMessage, sendMessage } = defineMessaging({ logger: console });