aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/socket.js29
-rw-r--r--src/lib/store.js2
-rw-r--r--src/lib/utils.js11
3 files changed, 28 insertions, 14 deletions
diff --git a/src/lib/socket.js b/src/lib/socket.js
index ea6d7a8c..9d0c472e 100644
--- a/src/lib/socket.js
+++ b/src/lib/socket.js
@@ -1,9 +1,17 @@
-import { rate, user, ws } from '$lib/store';
-
-const token = import.meta.env.VITE_COINOS_TOKEN;
+import { get } from 'svelte/store';
+import { rate, user, token } from '$lib/store';
let interval, socket;
+export const auth = () => {
+ let t = get(token);
+ if (t) send('login', t);
+};
+
+export const send = (type, data) => {
+ socket?.readyState === 1 && socket.send(JSON.stringify({ type, data }));
+};
+
export const messages = (data) => ({
rate() {
rate.set(data);
@@ -13,9 +21,7 @@ export const messages = (data) => ({
console.log(data);
},
- connected() {
- socket.send(JSON.stringify({ type: 'login', data: token }));
- },
+ connected: auth,
login() {
user.set(data);
@@ -30,17 +36,14 @@ let currentReconnectDelay = initialReconnectDelay;
export function connect() {
clearInterval(interval);
+ if (socket) return auth();
+
socket = new WebSocket('ws://localhost:3119/ws');
socket.addEventListener('open', onWebsocketOpen);
socket.addEventListener('close', onWebsocketClose);
socket.addEventListener('message', onWebsocketMessage);
- interval = setInterval(
- () => socket.readyState === 1 && socket.send(JSON.stringify({ type: 'heartbeat' })),
- 5000
- );
-
- ws.set(socket);
+ interval = setInterval(() => send('heartbeat'), 5000);
}
function onWebsocketMessage(msg) {
@@ -53,7 +56,7 @@ function onWebsocketOpen() {
}
function onWebsocketClose() {
- ws.set(null);
+ socket = null;
setTimeout(() => {
reconnectToWebsocket();
}, currentReconnectDelay + Math.floor(Math.random() * 3000));
diff --git a/src/lib/store.js b/src/lib/store.js
index 125ebc42..7b510748 100644
--- a/src/lib/store.js
+++ b/src/lib/store.js
@@ -2,5 +2,5 @@ import { writable } from 'svelte/store';
export const rate = writable();
export const user = writable();
-export const ws = writable();
export const invoiceAmount = writable();
+export const token = writable();
diff --git a/src/lib/utils.js b/src/lib/utils.js
index ba0d8335..b1bc24ec 100644
--- a/src/lib/utils.js
+++ b/src/lib/utils.js
@@ -1,3 +1,14 @@
+import { browser } from "$app/env";
+
export function scroll(section) {
section.scrollIntoView({ behavior: 'smooth' });
}
+
+const base = browser ? "" : import.meta.env.VITE_COINOS_URL;
+
+export const post = (url, body) =>
+ fetch(base + url, {
+ method: 'POST',
+ body: JSON.stringify(body),
+ headers: { 'accept': 'application/json', 'content-type': 'application/json' }
+ }).then(r => r.json);