aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/socket.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-08-21 01:53:02 -0700
committerAdam Soltys <[email protected]>2024-08-21 01:53:02 -0700
commitb2334dc5de60359e0efb9b8f328291f1763f1461 (patch)
treea86bd3a709035f212a91721410d6d46c0d251808 /src/lib/socket.js
parent3221f282ffa5a62fee10996288f3e1157309a10e (diff)
downloadcoinos-ui-b2334dc5de60359e0efb9b8f328291f1763f1461.tar.gz
coinos-ui-b2334dc5de60359e0efb9b8f328291f1763f1461.zip
wait if navigating
Diffstat (limited to 'src/lib/socket.js')
-rw-r--r--src/lib/socket.js17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/lib/socket.js b/src/lib/socket.js
index 6aa5498c..98d42ead 100644
--- a/src/lib/socket.js
+++ b/src/lib/socket.js
@@ -1,6 +1,7 @@
+import { navigating } from "$app/stores";
import { get } from "svelte/store";
import { event, invoice, request, newPayment, last } from "$lib/store";
-import { success, sat } from "$lib/utils";
+import { success, sat, sleep } from "$lib/utils";
import { PUBLIC_SOCKET } from "$env/static/public";
import { invalidate } from "$app/navigation";
import { browser } from "$app/environment";
@@ -33,13 +34,9 @@ export const messages = (data) => ({
async payment() {
let { amount, confirmed } = data;
- // without setTimeout, invalidate seems to break redirections from actions
- let delay = amount > 0 ? 0 : 2500;
- setTimeout(() => {
- invalidate("app:user");
- invalidate("app:invoice");
- invalidate("app:payments");
- }, delay);
+ invalidate("app:user");
+ invalidate("app:invoice");
+ invalidate("app:payments");
if (amount > 0) {
success(`${confirmed ? "Received" : "Detected"} ${sat(amount)}!`);
@@ -69,8 +66,10 @@ export function close() {
if (socket) socket.close();
}
-function onWebsocketMessage(msg) {
+async function onWebsocketMessage(msg) {
let { type, data } = JSON.parse(msg.data);
+ if (get(navigating)) await sleep(2000);
+
messages(data)[type] && messages(data)[type]();
}