diff --git a/src/Router.tsx b/src/Router.tsx index 7387f7a..8647967 100644 --- a/src/Router.tsx +++ b/src/Router.tsx @@ -74,6 +74,20 @@ const Router: Component = () => { primalWindow.onPrimalComponentCleanup = () => {}; primalWindow.onPrimalCacheServerConnected = () => {}; primalWindow.onPrimalUploadServerConnected = () => {}; + primalWindow.onPrimalCacheServerMessageReceived = () => {}; + primalWindow.onPrimalCacheServerMessageSent = () => {}; + + try { + const exts = localStorage.getItem('primalExtensions'); + if (exts) { + for (const url of JSON.parse(exts)) { + console.log("loading primal extension:", url); + const el = window.document.createElement("script"); + el.setAttribute("src", url); + window.document.body.appendChild(el); + } + } + } catch (ex) { console.log(ex); } } const getKnownProfiles = ({ params }: RouteDataFuncArgs) => { diff --git a/src/lib/devTools.ts b/src/lib/devTools.ts index f10616b..5a63fbb 100644 --- a/src/lib/devTools.ts +++ b/src/lib/devTools.ts @@ -23,7 +23,11 @@ export const hookForDev = (fn: Function) => { hook('onPrimalComponentCleanup', scope); }) - props.id = domId; + try { + props.id = domId; + } catch (ex) { + console.log(ex); + } return fn(props); }; diff --git a/src/sockets.tsx b/src/sockets.tsx index 01e14d0..b1ff1b2 100644 --- a/src/sockets.tsx +++ b/src/sockets.tsx @@ -11,8 +11,12 @@ const onOpen = () => { setConnected(true); if (localStorage.getItem('devMode') === 'true') { const hook = (window as PrimalWindow).onPrimalCacheServerConnected; - hook && hook(cacheServer, socket()); + + socket().addEventListener('message', function(event) { + const hook = (window as PrimalWindow).onPrimalCacheServerMessageReceived; + hook && hook(cacheServer, event.data); + }); } } @@ -63,6 +67,9 @@ export const sendMessage = (message: string) => { const e = new CustomEvent('send', { detail: { message, ws: socket() }}); socket()?.send(message); socket()?.dispatchEvent(e); + + const hook = (window as PrimalWindow).onPrimalCacheServerMessageSent; + hook && hook(cacheServer, message); } } @@ -103,7 +110,6 @@ export const subscribeTo = (subId: string, cb: (type: NostrEventType, subId: str if (subId === subscriptionId) { cb(type, subscriptionId, content); } - }; socket()?.addEventListener('message', listener); diff --git a/src/types/primal.d.ts b/src/types/primal.d.ts index f9d1394..d5591d6 100644 --- a/src/types/primal.d.ts +++ b/src/types/primal.d.ts @@ -344,6 +344,8 @@ export type PrimalWindow = Window & typeof globalThis & { onPrimalComponentCleanup?: (data: any) => void, onPrimalCacheServerConnected?: (url: string, ws: WebSocket | undefined) => void, onPrimalUploadServerConnected?: (url: string, ws: WebSocket | undefined) => void, + onPrimalCacheServerMessageReceived?: (url: string, data: any) => void, + onPrimalCacheServerMessageSent?: (url: string, data: any) => void, }; export type NostrEventType = "EVENT" | "EOSE" | "NOTICE";