diff options
| author | Adam Soltys <[email protected]> | 2024-11-26 13:08:08 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-11-26 13:20:53 -0800 |
| commit | 9b3e117eafbba224b86dd7f8b3c56a0370f72d5b (patch) | |
| tree | a670c3ae954d5075c851126c2aca7a1a45d1b41d /src/lib/socket.ts | |
| parent | 2761363d694d3f24600abbe656769f64d7a67605 (diff) | |
| download | coinos-ui-9b3e117eafbba224b86dd7f8b3c56a0370f72d5b.tar.gz coinos-ui-9b3e117eafbba224b86dd7f8b3c56a0370f72d5b.zip | |
bip21 and socket fixes
Diffstat (limited to 'src/lib/socket.ts')
| -rw-r--r-- | src/lib/socket.ts | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/lib/socket.ts b/src/lib/socket.ts index 566e989d..bd8494fa 100644 --- a/src/lib/socket.ts +++ b/src/lib/socket.ts @@ -3,9 +3,10 @@ import { navigating, page } from "$app/stores"; import { PUBLIC_SOCKET } from "$env/static/public"; import { event, invoice, last, request } from "$lib/store"; import { s, sleep, success, wait } from "$lib/utils"; +import cookies from "js-cookie"; import { get } from "svelte/store"; -let socket; +export let socket; let token; export const auth = () => token && send("login", token); @@ -13,8 +14,9 @@ export const auth = () => token && send("login", token); export const send = async (type, data) => { try { await wait(() => socket && socket.readyState === 1, 1000, 10); - } catch (e: any) { - if (e.message === "timeout") reconnectToWebsocket(); + } catch (e) { + const { message } = e as Error; + if (message === "timeout") reconnectToWebsocket(); } await wait(() => socket.readyState === 1, 1000, 10); @@ -47,8 +49,14 @@ export const messages = (data) => ({ url: { pathname }, } = get(page); + const username = cookies.get("username"); + if (amount > 0) { - if (pathname.includes("receive")) { + if ( + pathname.includes(`/${username}`) || + pathname.includes("/receive") || + pathname.includes("/invoice") + ) { await wait(() => !get(navigating)); await goto(`/invoice/${iid}`); } else success(`${confirmed ? "Received" : "Detected"} ⚡️${s(amount)}!`); @@ -63,7 +71,14 @@ const maxReconnectDelay = 16000; let currentReconnectDelay = initialReconnectDelay; +let connecting; export function connect(t) { + if (connecting) return; + connecting = true; + setTimeout(() => { + connecting = false; + }, 5000); + token = t; if (socket) return auth(); @@ -87,6 +102,7 @@ async function onWebsocketMessage(msg) { function onWebsocketOpen() { currentReconnectDelay = initialReconnectDelay; + send("heartbeat", token); } function onWebsocketClose() { |
