Modify WS dev hooks

This commit is contained in:
Bojan Mojsilovic 2023-09-04 12:13:39 +02:00
parent 44567394e0
commit 27c52965a5
4 changed files with 24 additions and 19 deletions

View File

@ -73,7 +73,7 @@ const Router: Component = () => {
primalWindow.onPrimalComponentMount = () => {}; primalWindow.onPrimalComponentMount = () => {};
primalWindow.onPrimalComponentCleanup = () => {}; primalWindow.onPrimalComponentCleanup = () => {};
primalWindow.onPrimalCacheServerConnected = () => {}; primalWindow.onPrimalCacheServerConnected = () => {};
primalWindow.onPrimalCacheServerMessage = () => {}; primalWindow.onPrimalUploadServerConnected = () => {};
} }
const getKnownProfiles = ({ params }: RouteDataFuncArgs) => { const getKnownProfiles = ({ params }: RouteDataFuncArgs) => {

View File

@ -12,7 +12,7 @@ const onOpen = () => {
if (localStorage.getItem('devMode') === 'true') { if (localStorage.getItem('devMode') === 'true') {
const hook = (window as PrimalWindow).onPrimalCacheServerConnected; 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('open', onOpen);
socket()?.removeEventListener('close', onClose); socket()?.removeEventListener('close', onClose);
socket()?.removeEventListener('error', onError); socket()?.removeEventListener('error', onError);
socket()?.removeEventListener('message', onMessage);
setTimeout(() => { setTimeout(() => {
connect(); connect();
}, 200); }, 200);
} }
const onMessage = (event: MessageEvent) => {
if (localStorage.getItem('devMode') === 'true') {
const hook = (window as PrimalWindow).onPrimalCacheServerMessage;
hook && hook(event);
}
}
const onError = (error: Event) => { const onError = (error: Event) => {
console.log("ws error: ", error); console.log("ws error: ", error);
}; };
@ -55,7 +46,6 @@ export const connect = () => {
socket()?.addEventListener('open', onOpen); socket()?.addEventListener('open', onOpen);
socket()?.addEventListener('close', onClose); socket()?.addEventListener('close', onClose);
socket()?.addEventListener('error', onError); socket()?.addEventListener('error', onError);
socket()?.addEventListener('message', onMessage);
} }
}; };
@ -69,7 +59,11 @@ export const reset = () => {
}; };
export const sendMessage = (message: string) => { 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 = ( export const refreshSocketListeners = (

View File

@ -342,8 +342,8 @@ export type PrimalWindow = Window & typeof globalThis & {
primal?: any, primal?: any,
onPrimalComponentMount?: (data: any) => void, onPrimalComponentMount?: (data: any) => void,
onPrimalComponentCleanup?: (data: any) => void, onPrimalComponentCleanup?: (data: any) => void,
onPrimalCacheServerConnected?: (url: string) => void, onPrimalCacheServerConnected?: (url: string, ws: WebSocket | undefined) => void,
onPrimalCacheServerMessage?: (message: MessageEvent) => void, onPrimalUploadServerConnected?: (url: string, ws: WebSocket | undefined) => void,
}; };
export type NostrEventType = "EVENT" | "EOSE" | "NOTICE"; export type NostrEventType = "EVENT" | "EOSE" | "NOTICE";

View File

@ -1,5 +1,5 @@
import { createSignal } from "solid-js"; 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<WebSocket>(); export const [socket, setSocket] = createSignal<WebSocket>();
@ -9,6 +9,11 @@ export const isNotConnected = () => !isConnected();
const onOpen = () => { const onOpen = () => {
setConnected(true); setConnected(true);
if (localStorage.getItem('devMode') === 'true') {
const hook = (window as PrimalWindow).onPrimalUploadServerConnected;
hook && hook(uploadServer, socket());
}
} }
const onClose = () => { const onClose = () => {
@ -27,12 +32,14 @@ const onError = (error: Event) => {
console.log("ws error: ", error); console.log("ws error: ", error);
}; };
export let uploadServer = '';
export const connect = () => { export const connect = () => {
if (isNotConnected()) { if (isNotConnected()) {
const cacheServer = localStorage.getItem('uploadServer') || uploadServer = localStorage.getItem('uploadServer') ||
import.meta.env.PRIMAL_UPLOAD_URL; import.meta.env.PRIMAL_UPLOAD_URL;
setSocket(new WebSocket(cacheServer)); setSocket(new WebSocket(uploadServer));
console.log('UPLOAD SOCKET: ', socket()); console.log('UPLOAD SOCKET: ', socket());
socket()?.addEventListener('open', onOpen); socket()?.addEventListener('open', onOpen);
@ -51,7 +58,11 @@ export const reset = () => {
}; };
export const sendMessage = (message: string) => { 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 = ( export const refreshSocketListeners = (