From 8346eb9e052d10abf4fb65b66838aaab47152e2a Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 30 Aug 2024 18:52:00 -0700 Subject: typescript --- src/lib/socket.js | 92 ------------------------------------------------------- 1 file changed, 92 deletions(-) delete mode 100644 src/lib/socket.js (limited to 'src/lib/socket.js') diff --git a/src/lib/socket.js b/src/lib/socket.js deleted file mode 100644 index 98d42ead..00000000 --- a/src/lib/socket.js +++ /dev/null @@ -1,92 +0,0 @@ -import { navigating } from "$app/stores"; -import { get } from "svelte/store"; -import { event, invoice, request, newPayment, last } from "$lib/store"; -import { success, sat, sleep } from "$lib/utils"; -import { PUBLIC_SOCKET } from "$env/static/public"; -import { invalidate } from "$app/navigation"; -import { browser } from "$app/environment"; - -let socket, token; - -export const auth = () => token && send("login", token); - -export const send = (type, data) => { - socket?.readyState === 1 && socket.send(JSON.stringify({ type, data })); - return true; -}; - -export const messages = (data) => ({ - id() { - last.set(Date.now()); - }, - invoice() { - invoice.set(data); - }, - event() { - event.set(data); - }, - - request() { - request.set(data); - invalidate("app:invoice"); - }, - - async payment() { - let { amount, confirmed } = data; - - invalidate("app:user"); - invalidate("app:invoice"); - invalidate("app:payments"); - - if (amount > 0) { - success(`${confirmed ? "Received" : "Detected"} ${sat(amount)}!`); - } - }, - - connected: auth, -}); - -const initialReconnectDelay = 1000; -const maxReconnectDelay = 16000; - -let currentReconnectDelay = initialReconnectDelay; - -export function connect(t) { - token = t; - - if (socket) return auth(); - - socket = new WebSocket(PUBLIC_SOCKET); - socket.addEventListener("open", onWebsocketOpen); - socket.addEventListener("close", onWebsocketClose); - socket.addEventListener("message", onWebsocketMessage); -} - -export function close() { - if (socket) socket.close(); -} - -async function onWebsocketMessage(msg) { - let { type, data } = JSON.parse(msg.data); - if (get(navigating)) await sleep(2000); - - messages(data)[type] && messages(data)[type](); -} - -function onWebsocketOpen() { - currentReconnectDelay = initialReconnectDelay; -} - -function onWebsocketClose() { - socket = null; - setTimeout(() => { - reconnectToWebsocket(); - }, currentReconnectDelay + Math.floor(Math.random() * 3000)); -} - -function reconnectToWebsocket() { - if (currentReconnectDelay < maxReconnectDelay) { - currentReconnectDelay *= 2; - } - connect(token); -} -- cgit v1.2.3