diff options
| author | Adam Soltys <[email protected]> | 2022-07-26 21:06:01 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2022-07-26 21:06:01 -0700 |
| commit | 059613490db9be904791686c49851ec1cc095774 (patch) | |
| tree | dbf229d10d44b19bac1312b5847d75c4c04d0261 /src | |
| parent | b13d88d63dbd7ce7df9d6847036d3e36d78f97b2 (diff) | |
| download | coinos-ui-059613490db9be904791686c49851ec1cc095774.tar.gz coinos-ui-059613490db9be904791686c49851ec1cc095774.zip | |
register endpoint
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/RegisterOrLogin.svelte | 17 | ||||
| -rw-r--r-- | src/lib/socket.js | 29 | ||||
| -rw-r--r-- | src/lib/store.js | 1 | ||||
| -rw-r--r-- | src/lib/utils.js | 8 | ||||
| -rw-r--r-- | src/routes/invoice.svelte | 2 | ||||
| -rw-r--r-- | src/routes/login.js | 12 | ||||
| -rw-r--r-- | src/routes/register.js | 6 | ||||
| -rw-r--r-- | src/routes/register.svelte | 1 |
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" /> |
