its for when you want to get like notifications for your reposts
1import { render } from "solid-js/web"; 2 3import "bsky-repost-likes-monitor/style.css"; 4import { 5 App, 6 AppProps, 7 ConnectionStatus, 8 Notification, 9} from "bsky-repost-likes-monitor"; 10import { Component, createSignal } from "solid-js"; 11import { onMessage, sendMessage } from "webext-bridge/popup"; 12import store from "@/utils/store"; 13 14const Wrapped: Component = () => { 15 const [actorId, setActorId] = createSignal<string>(""); 16 const [serviceDomain, setWsUrl] = createSignal<string>(""); 17 const [items, setItems] = createSignal<Notification[]>([]); 18 const [connectionStatus, setConnectionStatus] = 19 createSignal<ConnectionStatus>("disconnected"); 20 const [error, setError] = createSignal<string | null>(null); 21 22 onMessage("setError", ({ data }) => { 23 setError(data); 24 }); 25 onMessage("setConnectionStatus", ({ data }) => { 26 setConnectionStatus(data); 27 }); 28 onMessage("setItems", ({ data }) => { 29 setItems(data); 30 }); 31 32 const connect = async () => { 33 try { 34 await sendMessage( 35 "connectService", 36 { 37 actorId: actorId(), 38 serviceDomain: serviceDomain(), 39 }, 40 "background", 41 ); 42 await store.actorId.setValue(actorId()); 43 await store.serviceDomain.setValue(serviceDomain()); 44 } catch (error) { 45 setError(`failed to connect: ${error}`); 46 } 47 }; 48 49 const disconnect = async () => { 50 try { 51 await sendMessage("disconnectService", {}, "background"); 52 } catch (error) { 53 setError(`failed to disconnect: ${error}`); 54 } 55 }; 56 57 onCleanup(disconnect); 58 onMount(async () => { 59 await store.actorId.getValue().then(setActorId); 60 await store.serviceDomain.getValue().then(setWsUrl); 61 62 await sendMessage("connectionStatus", {}, "background").then( 63 setConnectionStatus, 64 ); 65 await sendMessage("error", {}, "background").then(setError); 66 await sendMessage("items", {}, "background").then(setItems); 67 }); 68 69 const props: AppProps = { 70 actorIdSignal: [actorId, setActorId], 71 serviceDomainSignal: [serviceDomain, setWsUrl], 72 items, 73 clearItems: () => { 74 setItems([]); 75 sendMessage("clearItems", {}, "background"); 76 }, 77 connectionStatus: connectionStatus, 78 error, 79 connect, 80 disconnect, 81 isExtension: true, 82 }; 83 84 return <App {...props}></App>; 85}; 86 87render(() => <Wrapped />, document.getElementById("root")!);