1
0
mirror of https://github.com/XFox111/TabsAsideExtension.git synced 2026-04-22 07:58:01 +03:00
Files
TabsAsideExtension/utils/messaging.ts
T
xfox111 2bd9337e63 Major 3.0 (#118)
Co-authored-by: Maison da Silva <maisonmdsgreen@hotmail.com>
2025-07-30 15:02:26 +03:00

43 lines
1.4 KiB
TypeScript

import { trackError } from "@/features/analytics";
import { CollectionItem, GraphicsStorage, GroupItem } 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;
openCollection(data: { collection: CollectionItem; targetWindow: "new" | "incognito"; }): void;
openGroup(data: { group: GroupItem; newWindow: boolean; }): void;
};
function defineMessaging(config?: ExtensionMessagingConfig): ExtensionMessenger<ProtocolMap>
{
const { onMessage, sendMessage, removeAllListeners }: ExtensionMessenger<ProtocolMap> = defineExtensionMessaging<ProtocolMap>(config);
return {
onMessage,
removeAllListeners,
async sendMessage<TType extends keyof ProtocolMap>(
type: TType,
data: GetDataType<ProtocolMap[TType]>,
...args: ExtensionSendMessageArgs
): Promise<GetReturnType<ProtocolMap[TType]>>
{
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 });