aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/socket.ts
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-10-18 09:08:07 -0700
committerAdam Soltys <[email protected]>2024-10-18 09:09:14 -0700
commit002cd9134d2e23bec34f838f6d6fefba41f2d530 (patch)
tree92fa0e0ab54ce1a715d25f458de8b8ed8cc70bd5 /src/lib/socket.ts
parentf6bfe889d91bc6e36b0300d7b618f10158efe176 (diff)
downloadcoinos-ui-002cd9134d2e23bec34f838f6d6fefba41f2d530.tar.gz
coinos-ui-002cd9134d2e23bec34f838f6d6fefba41f2d530.zip
biome format
Diffstat (limited to 'src/lib/socket.ts')
-rw-r--r--src/lib/socket.ts101
1 files changed, 52 insertions, 49 deletions
diff --git a/src/lib/socket.ts b/src/lib/socket.ts
index 26ab543c..bbedd3ed 100644
--- a/src/lib/socket.ts
+++ b/src/lib/socket.ts
@@ -11,44 +11,44 @@ let token;
export const auth = () => token && send("login", token);
export const send = async (type, data) => {
- try {
- await wait(() => socket && socket.readyState === 1, 100, 10);
- } catch (e: any) {
- if (e.message === "timeout") reconnectToWebsocket();
- }
+ try {
+ await wait(() => socket && socket.readyState === 1, 100, 10);
+ } catch (e: any) {
+ if (e.message === "timeout") reconnectToWebsocket();
+ }
- await wait(() => socket.readyState === 1, 100, 10);
- socket.send(JSON.stringify({ type, data }));
+ await wait(() => socket.readyState === 1, 100, 10);
+ socket.send(JSON.stringify({ type, data }));
};
export const messages = (data) => ({
- id() {
- last.set(Date.now());
- },
- invoice() {
- invoice.set(data);
- },
- event() {
- event.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;
@@ -57,41 +57,44 @@ 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();
}
async function onWebsocketMessage(msg) {
- let { type, data } = JSON.parse(msg.data);
- if (get(navigating)) await sleep(2000);
+ let { type, data } = JSON.parse(msg.data);
+ if (get(navigating)) await sleep(2000);
- messages(data)[type] && messages(data)[type]();
+ 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);
}