aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/socket.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/socket.js')
-rw-r--r--src/lib/socket.js114
1 files changed, 61 insertions, 53 deletions
diff --git a/src/lib/socket.js b/src/lib/socket.js
index 96fde317..d51ab39b 100644
--- a/src/lib/socket.js
+++ b/src/lib/socket.js
@@ -1,50 +1,58 @@
-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,
+ 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";
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);
+ },
+ rate() {
+ rate.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 +61,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);
}