diff options
Diffstat (limited to 'src/lib/socket.js')
| -rw-r--r-- | src/lib/socket.js | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/src/lib/socket.js b/src/lib/socket.js index efc2651b..66091d76 100644 --- a/src/lib/socket.js +++ b/src/lib/socket.js @@ -1,23 +1,31 @@ -import { get } from "svelte/store"; -import { rate, user, token, ws } from '$lib/store'; +import { get } from 'svelte/store'; +import { rate, user, token, invoices, preferredCurrency } 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); }, payment() { - console.log(data); + invoices.set({ ...get(invoices), [data.invoice.uuid]: data.invoice }); }, - connected() { - socket.send(JSON.stringify({ type: 'login', data: { token: get(token) } })); - }, + connected: auth, login() { user.set(data); + preferredCurrency.set(data.currency); } }); @@ -29,18 +37,18 @@ let currentReconnectDelay = initialReconnectDelay; export function connect() { clearInterval(interval); - if (socket) socket.close(); + 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 - ); + interval = setInterval(() => send('heartbeat'), 5000); +} - ws.set(socket); +export function close() { + if (socket) socket.close(); } function onWebsocketMessage(msg) { @@ -53,7 +61,7 @@ function onWebsocketOpen() { } function onWebsocketClose() { - ws.set(null); + socket = null; setTimeout(() => { reconnectToWebsocket(); }, currentReconnectDelay + Math.floor(Math.random() * 3000)); |
