its for when you want to get like notifications for your reposts
1import {
2 ConnectionStatus,
3 connectService,
4 Notification,
5} from "bsky-repost-likes-monitor/background";
6import { onMessage, sendMessage } from "webext-bridge/background";
7
8let websocket: WebSocket | null = null;
9let connectionStatus: ConnectionStatus = "disconnected";
10let error: string | null = null;
11let items: Notification[] = [];
12
13export default defineBackground({
14 persistent: true,
15 main: () => {
16 onMessage("connectService", ({ data: { actorId, serviceDomain } }) => {
17 connectService({
18 actorId,
19 serviceDomain,
20 pushNotification: (item) => {
21 items = [item, ...items];
22 sendMessage("setItems", items, "popup");
23 },
24 setConnectionStatus,
25 setError,
26 }).then((ws) => (websocket = ws ?? null));
27 });
28 onMessage("disconnectService", () => {
29 setConnectionStatus("disconnecting...");
30 websocket?.close();
31 websocket = null;
32 });
33 onMessage("connectionStatus", () => {
34 return connectionStatus;
35 });
36 onMessage("error", () => {
37 return error;
38 });
39 onMessage("items", () => {
40 return items;
41 });
42 onMessage("setItems", ({ data }) => {
43 items = data;
44 });
45 },
46});
47
48const setConnectionStatus = (status: ConnectionStatus) => {
49 connectionStatus = status;
50 sendMessage("setConnectionStatus", status, "popup");
51};
52const setError = (_error: string | null) => {
53 error = _error;
54 sendMessage("setError", error, "popup");
55};