diff --git a/src/Router.tsx b/src/Router.tsx index 985c024..08c5a68 100644 --- a/src/Router.tsx +++ b/src/Router.tsx @@ -70,8 +70,10 @@ const Router: Component = () => { thread, }; - primalWindow.onPrimalComponentMount = (data: ComponentLog) => {}; - primalWindow.onPrimalComponentCleanup = (data: ComponentLog) => {}; + primalWindow.onPrimalComponentMount = () => {}; + primalWindow.onPrimalComponentCleanup = () => {}; + primalWindow.onPrimalCacheServerConnected = () => {}; + primalWindow.onPrimalCacheServerMessage = () => {}; } const getKnownProfiles = ({ params }: RouteDataFuncArgs) => { diff --git a/src/sockets.tsx b/src/sockets.tsx index cc8655d..e091c9a 100644 --- a/src/sockets.tsx +++ b/src/sockets.tsx @@ -1,5 +1,5 @@ import { createSignal } from "solid-js"; -import { NostrEvent, NostrEOSE, NostrEventType, NostrEventContent } from "./types/primal"; +import { NostrEvent, NostrEOSE, NostrEventType, NostrEventContent, PrimalWindow } from "./types/primal"; export const [socket, setSocket] = createSignal(); @@ -9,6 +9,11 @@ export const isNotConnected = () => !isConnected(); const onOpen = () => { setConnected(true); + if (localStorage.getItem('devMode') === 'true') { + const hook = (window as PrimalWindow).onPrimalCacheServerConnected; + + hook && hook(cacheServer); + } } const onClose = () => { @@ -17,12 +22,21 @@ const onClose = () => { socket()?.removeEventListener('open', onOpen); socket()?.removeEventListener('close', onClose); socket()?.removeEventListener('error', onError); + socket()?.removeEventListener('message', onMessage); setTimeout(() => { connect(); }, 200); } +const onMessage = (event: MessageEvent) => { + if (localStorage.getItem('devMode') === 'true') { + const hook = (window as PrimalWindow).onPrimalCacheServerMessage; + + hook && hook(event); + } +} + const onError = (error: Event) => { console.log("ws error: ", error); }; @@ -41,6 +55,7 @@ export const connect = () => { socket()?.addEventListener('open', onOpen); socket()?.addEventListener('close', onClose); socket()?.addEventListener('error', onError); + socket()?.addEventListener('message', onMessage); } }; diff --git a/src/types/primal.d.ts b/src/types/primal.d.ts index e697d56..80714dd 100644 --- a/src/types/primal.d.ts +++ b/src/types/primal.d.ts @@ -342,6 +342,8 @@ export type PrimalWindow = Window & typeof globalThis & { primal?: any, onPrimalComponentMount?: (data: any) => void, onPrimalComponentCleanup?: (data: any) => void, + onPrimalCacheServerConnected?: (url: string) => void, + onPrimalCacheServerMessage?: (message: MessageEvent) => void, }; export type NostrEventType = "EVENT" | "EOSE" | "NOTICE";