diff --git a/src/Router.tsx b/src/Router.tsx index 08c5a68..7387f7a 100644 --- a/src/Router.tsx +++ b/src/Router.tsx @@ -73,7 +73,7 @@ const Router: Component = () => { primalWindow.onPrimalComponentMount = () => {}; primalWindow.onPrimalComponentCleanup = () => {}; primalWindow.onPrimalCacheServerConnected = () => {}; - primalWindow.onPrimalCacheServerMessage = () => {}; + primalWindow.onPrimalUploadServerConnected = () => {}; } const getKnownProfiles = ({ params }: RouteDataFuncArgs) => { diff --git a/src/sockets.tsx b/src/sockets.tsx index e091c9a..01e14d0 100644 --- a/src/sockets.tsx +++ b/src/sockets.tsx @@ -12,7 +12,7 @@ const onOpen = () => { if (localStorage.getItem('devMode') === 'true') { const hook = (window as PrimalWindow).onPrimalCacheServerConnected; - hook && hook(cacheServer); + hook && hook(cacheServer, socket()); } } @@ -22,21 +22,12 @@ 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); }; @@ -55,7 +46,6 @@ export const connect = () => { socket()?.addEventListener('open', onOpen); socket()?.addEventListener('close', onClose); socket()?.addEventListener('error', onError); - socket()?.addEventListener('message', onMessage); } }; @@ -69,7 +59,11 @@ export const reset = () => { }; export const sendMessage = (message: string) => { - isConnected() && socket()?.send(message); + if (isConnected()) { + const e = new CustomEvent('send', { detail: { message, ws: socket() }}); + socket()?.send(message); + socket()?.dispatchEvent(e); + } } export const refreshSocketListeners = ( diff --git a/src/types/primal.d.ts b/src/types/primal.d.ts index 80714dd..f9d1394 100644 --- a/src/types/primal.d.ts +++ b/src/types/primal.d.ts @@ -342,8 +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, + onPrimalCacheServerConnected?: (url: string, ws: WebSocket | undefined) => void, + onPrimalUploadServerConnected?: (url: string, ws: WebSocket | undefined) => void, }; export type NostrEventType = "EVENT" | "EOSE" | "NOTICE"; diff --git a/src/uploadSocket.tsx b/src/uploadSocket.tsx index 3f1b237..72361a2 100644 --- a/src/uploadSocket.tsx +++ b/src/uploadSocket.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).onPrimalUploadServerConnected; + + hook && hook(uploadServer, socket()); + } } const onClose = () => { @@ -27,12 +32,14 @@ const onError = (error: Event) => { console.log("ws error: ", error); }; +export let uploadServer = ''; + export const connect = () => { if (isNotConnected()) { - const cacheServer = localStorage.getItem('uploadServer') || + uploadServer = localStorage.getItem('uploadServer') || import.meta.env.PRIMAL_UPLOAD_URL; - setSocket(new WebSocket(cacheServer)); + setSocket(new WebSocket(uploadServer)); console.log('UPLOAD SOCKET: ', socket()); socket()?.addEventListener('open', onOpen); @@ -51,7 +58,11 @@ export const reset = () => { }; export const sendMessage = (message: string) => { - isConnected() && socket()?.send(message); + if (isConnected()) { + const e = new CustomEvent('send', { detail: { message, ws: socket() }}); + socket()?.send(message); + socket()?.dispatchEvent(e); + } } export const refreshSocketListeners = (