mirror of
https://github.com/PrimalHQ/primal-web-app.git
synced 2024-10-01 17:31:13 +00:00
Web socket connection and message hooks
This commit is contained in:
parent
f5eb6047d5
commit
9f8b2f4b35
@ -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) => {
|
||||
|
@ -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<WebSocket>();
|
||||
|
||||
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
2
src/types/primal.d.ts
vendored
2
src/types/primal.d.ts
vendored
@ -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";
|
||||
|
Loading…
Reference in New Issue
Block a user