aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2022-07-26 21:06:01 -0700
committerAdam Soltys <[email protected]>2022-07-26 21:06:01 -0700
commit059613490db9be904791686c49851ec1cc095774 (patch)
treedbf229d10d44b19bac1312b5847d75c4c04d0261 /src
parentb13d88d63dbd7ce7df9d6847036d3e36d78f97b2 (diff)
downloadcoinos-ui-059613490db9be904791686c49851ec1cc095774.tar.gz
coinos-ui-059613490db9be904791686c49851ec1cc095774.zip
register endpoint
Diffstat (limited to 'src')
-rw-r--r--src/components/RegisterOrLogin.svelte17
-rw-r--r--src/lib/socket.js29
-rw-r--r--src/lib/store.js1
-rw-r--r--src/lib/utils.js8
-rw-r--r--src/routes/invoice.svelte2
-rw-r--r--src/routes/login.js12
-rw-r--r--src/routes/register.js6
-rw-r--r--src/routes/register.svelte1
8 files changed, 40 insertions, 36 deletions
diff --git a/src/components/RegisterOrLogin.svelte b/src/components/RegisterOrLogin.svelte
index 7cc41709..12d7b8b7 100644
--- a/src/components/RegisterOrLogin.svelte
+++ b/src/components/RegisterOrLogin.svelte
@@ -2,7 +2,7 @@
import { Icon } from '$comp';
import { post } from '$lib/utils';
import { token } from '$lib/store';
- import { connect } from '$lib/socket';
+ import { auth } from '$lib/socket';
import { goto } from '$app/navigation';
export let page;
@@ -16,14 +16,13 @@
'Sign in': '/login'
}[page];
- let submit = () =>
- post(url, { username, password }).then((r) =>
- r.json().then((r) => {
- $token = r.token;
- connect();
- goto('/receive');
- })
- );
+ let submit = async () => {
+ let r = await post(url, { username, password });
+ if (!r.token) r = await post('/login', { username, password });
+ $token = r.token;
+ auth();
+ goto('/receive');
+ };
</script>
<div class="pt-10">
diff --git a/src/lib/socket.js b/src/lib/socket.js
index efc2651b..9d0c472e 100644
--- a/src/lib/socket.js
+++ b/src/lib/socket.js
@@ -1,8 +1,17 @@
-import { get } from "svelte/store";
-import { rate, user, token, ws } from '$lib/store';
+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);
@@ -12,9 +21,7 @@ export const messages = (data) => ({
console.log(data);
},
- connected() {
- socket.send(JSON.stringify({ type: 'login', data: { token: get(token) } }));
- },
+ connected: auth,
login() {
user.set(data);
@@ -29,18 +36,14 @@ 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
- );
-
- 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 3963f55a..94b7fffd 100644
--- a/src/lib/store.js
+++ b/src/lib/store.js
@@ -3,4 +3,3 @@ import { writable } from 'svelte/store';
export const rate = writable();
export const user = writable();
export const token = writable();
-export const ws = writable();
diff --git a/src/lib/utils.js b/src/lib/utils.js
index 595d2dd8..b1bc24ec 100644
--- a/src/lib/utils.js
+++ b/src/lib/utils.js
@@ -1,10 +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(url, {
+ fetch(base + url, {
method: 'POST',
body: JSON.stringify(body),
headers: { 'accept': 'application/json', 'content-type': 'application/json' }
- });
+ }).then(r => r.json);
diff --git a/src/routes/invoice.svelte b/src/routes/invoice.svelte
index b8f9e54b..eedb2494 100644
--- a/src/routes/invoice.svelte
+++ b/src/routes/invoice.svelte
@@ -6,6 +6,7 @@
</script>
QR code
+{#if $user}
{text}
@@ -16,3 +17,4 @@ QR code
{#each $user.payments as p}
{p.amount}<br />
{/each}
+{/if}
diff --git a/src/routes/login.js b/src/routes/login.js
index e8c74365..771de9e1 100644
--- a/src/routes/login.js
+++ b/src/routes/login.js
@@ -1,13 +1,5 @@
-import got from 'got';
+import { post } from '$lib/utils';
export async function POST({ request }) {
- let json = await request.json();
-
- let body = await got
- .post('http://localhost:3119/login', {
- json
- })
- .json();
-
- return { body };
+ return { body: await post('/login', await request.json()) };
}
diff --git a/src/routes/register.js b/src/routes/register.js
new file mode 100644
index 00000000..9f79f94e
--- /dev/null
+++ b/src/routes/register.js
@@ -0,0 +1,6 @@
+import { post } from '$lib/utils';
+
+export async function POST({ request }) {
+ let user = await request.json();
+ return { body: await post('/register', { user }) };
+}
diff --git a/src/routes/register.svelte b/src/routes/register.svelte
index 60a81ced..69ec5fd2 100644
--- a/src/routes/register.svelte
+++ b/src/routes/register.svelte
@@ -1,6 +1,5 @@
<script>
import { RegisterOrLogin } from '$comp';
- import { post } from "$lib/utils";
</script>
<RegisterOrLogin page="Register" />