aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/socket.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-12-06 20:33:45 -0800
committerAdam Soltys <[email protected]>2023-12-06 20:33:45 -0800
commit6b3ff247e4125941a611369ed9bb74a2ffca57d8 (patch)
tree91da939350398188834e5e002bc78011a2a8e5bf /src/lib/socket.js
parentbb59ac3e4e7fcbf7f8a48820eab0ee21558183fc (diff)
parentd69c34cf389639eac82d24d1f1b02f038ef42399 (diff)
downloadcoinos-ui-6b3ff247e4125941a611369ed9bb74a2ffca57d8.tar.gz
coinos-ui-6b3ff247e4125941a611369ed9bb74a2ffca57d8.zip
Merge branch 'master' into swapee
Diffstat (limited to 'src/lib/socket.js')
-rw-r--r--src/lib/socket.js103
1 files changed, 50 insertions, 53 deletions
diff --git a/src/lib/socket.js b/src/lib/socket.js
index 96fde317..8d8adb77 100644
--- a/src/lib/socket.js
+++ b/src/lib/socket.js
@@ -1,50 +1,47 @@
-import { get } from 'svelte/store';
-import { event, invoice, request, newPayment, last, rate, user } from '$lib/store';
-import { success, sat } from '$lib/utils';
-import { PUBLIC_SOCKET } from '$env/static/public';
-import { invalidate } from '$app/navigation';
-import { browser } from '$app/environment';
+import { get } from "svelte/store";
+import { event, invoice, request, newPayment, last, user } from "$lib/store";
+import { success, sat } 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 auth = () => token && send("login", token);
export const send = (type, data) => {
- socket?.readyState === 1 && socket.send(JSON.stringify({ type, data }));
- return true;
+ 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);
- },
- rate() {
- rate.set(data);
- },
+ id() {
+ last.set(Date.now());
+ },
+ invoice() {
+ invoice.set(data);
+ },
+ event() {
+ event.set(data);
+ },
- request() {
- request.set(data);
- invalidate('app:invoice');
- },
+ request() {
+ request.set(data);
+ invalidate("app:invoice");
+ },
- async payment() {
- let { amount, confirmed } = data;
- invalidate('app:user');
- invalidate('app:invoice');
- invalidate('app:payments');
+ async payment() {
+ let { amount, confirmed } = data;
+ invalidate("app:user");
+ invalidate("app:invoice");
+ invalidate("app:payments");
- if (amount > 0) {
- success(`${confirmed ? 'Received' : 'Detected'} ${sat(amount)}!`);
- }
- },
+ if (amount > 0) {
+ success(`${confirmed ? "Received" : "Detected"} ${sat(amount)}!`);
+ }
+ },
- connected: auth
+ connected: auth,
});
const initialReconnectDelay = 1000;
@@ -53,39 +50,39 @@ const maxReconnectDelay = 16000;
let currentReconnectDelay = initialReconnectDelay;
export function connect(t) {
- token = t;
+ token = t;
- if (socket) return auth();
+ if (socket) return auth();
- socket = new WebSocket(PUBLIC_SOCKET);
- socket.addEventListener('open', onWebsocketOpen);
- socket.addEventListener('close', onWebsocketClose);
- socket.addEventListener('message', onWebsocketMessage);
+ socket = new WebSocket(PUBLIC_SOCKET);
+ socket.addEventListener("open", onWebsocketOpen);
+ socket.addEventListener("close", onWebsocketClose);
+ socket.addEventListener("message", onWebsocketMessage);
}
export function close() {
- if (socket) socket.close();
+ if (socket) socket.close();
}
function onWebsocketMessage(msg) {
- let { type, data } = JSON.parse(msg.data);
- messages(data)[type] && messages(data)[type]();
+ let { type, data } = JSON.parse(msg.data);
+ messages(data)[type] && messages(data)[type]();
}
function onWebsocketOpen() {
- currentReconnectDelay = initialReconnectDelay;
+ currentReconnectDelay = initialReconnectDelay;
}
function onWebsocketClose() {
- socket = null;
- setTimeout(() => {
- reconnectToWebsocket();
- }, currentReconnectDelay + Math.floor(Math.random() * 3000));
+ socket = null;
+ setTimeout(() => {
+ reconnectToWebsocket();
+ }, currentReconnectDelay + Math.floor(Math.random() * 3000));
}
function reconnectToWebsocket() {
- if (currentReconnectDelay < maxReconnectDelay) {
- currentReconnectDelay *= 2;
- }
- connect(token);
+ if (currentReconnectDelay < maxReconnectDelay) {
+ currentReconnectDelay *= 2;
+ }
+ connect(token);
}