aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/socket.ts
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-11-26 13:08:08 -0800
committerAdam Soltys <[email protected]>2024-11-26 13:20:53 -0800
commit9b3e117eafbba224b86dd7f8b3c56a0370f72d5b (patch)
treea670c3ae954d5075c851126c2aca7a1a45d1b41d /src/lib/socket.ts
parent2761363d694d3f24600abbe656769f64d7a67605 (diff)
downloadcoinos-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.ts24
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() {