diff options
| author | Adam Soltys <[email protected]> | 2023-01-13 20:26:53 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-01-13 20:26:53 -0800 |
| commit | 277b921ab2a97ac170f980c3c916ab1488318f2f (patch) | |
| tree | af771877eb261c41aa158aef2dddf96fa40f653c /src | |
| parent | e0671101e4b217ff891fad85482e5943aa5cf543 (diff) | |
| download | coinos-ui-277b921ab2a97ac170f980c3c916ab1488318f2f.tar.gz coinos-ui-277b921ab2a97ac170f980c3c916ab1488318f2f.zip | |
server redis migration
Diffstat (limited to 'src')
23 files changed, 109 insertions, 122 deletions
diff --git a/src/components/AppHeader.svelte b/src/components/AppHeader.svelte index 44c7c4a5..03767238 100644 --- a/src/components/AppHeader.svelte +++ b/src/components/AppHeader.svelte @@ -23,7 +23,7 @@ let showMenu = false; - $: bg = subject?.banner ? `url(/api/public/${subject.uuid}-banner.webp)` : undefined; + $: bg = subject?.banner ? `url(/api/public/${subject.id}-banner.webp)` : undefined; $: $page && (showMenu = false); </script> diff --git a/src/components/Avatar.svelte b/src/components/Avatar.svelte index 8c819709..09161e01 100644 --- a/src/components/Avatar.svelte +++ b/src/components/Avatar.svelte @@ -12,7 +12,7 @@ $: src = '/api/public/' + - (user?.profile ? user.uuid + '-profile.webp' : 'punks/' + punk(user?.pubkey || user?.uuid || 'aa')); + (user?.profile ? user.id + '-profile.webp' : 'punks/' + punk(user?.pubkey || user?.id || 'aa')); </script> <a href={link} class:pointer-events-none={disabled}> diff --git a/src/components/Invoice.svelte b/src/components/Invoice.svelte index accb4c27..5eb4790c 100644 --- a/src/components/Invoice.svelte +++ b/src/components/Invoice.svelte @@ -21,7 +21,7 @@ </div> </div> <div class="mx-auto my-auto flex gap-2"> - <a href={`/invoice/${$invoice.uuid}/tip`}> + <a href={`/invoice/${$invoice.id}/tip`}> <button class="rounded-full border py-2 px-4 font-bold hover:opacity-80 w-32"> {$t('transactions.pay')} </button> diff --git a/src/lib/invoice.js b/src/lib/invoice.js index 79639d84..c81b4061 100644 --- a/src/lib/invoice.js +++ b/src/lib/invoice.js @@ -17,21 +17,21 @@ export default async ({ cookies, request, url }) => { request_id }; - let user = { username: form.get('username') }; + let user = { username: form.get('username'), currency: form.get('currency') }; - let { uuid } = await post('/invoice', { invoice, user }, auth(cookies)); + let { id } = await post('/invoice', { invoice, user }, auth(cookies)); if (request_id) { if (url.pathname.endsWith('tip')) { - throw redirect(307, `/send/${uuid}`); + throw redirect(307, `/send/${id}`); } throw redirect(307, `/${user.username}/request/${request_id}`); } if (invoice.prompt) { - throw redirect(307, `/invoice/${uuid}/tip`); + throw redirect(307, `/invoice/${id}/tip`); } else { - throw redirect(307, `/invoice/${uuid}`); + throw redirect(307, `/invoice/${id}`); } }; diff --git a/src/lib/socket.js b/src/lib/socket.js index 5a4da262..aba2f965 100644 --- a/src/lib/socket.js +++ b/src/lib/socket.js @@ -61,7 +61,6 @@ export const messages = (data) => ({ let { amount, invoice } = data; if (invoice) invalidate('app:invoice'); - if (get(user)?.account_id !== data.account_id) return; let payments = get(txns); let i = payments.findIndex((p) => p.id === data.id); diff --git a/src/routes/(app)/+layout.server.js b/src/routes/(app)/+layout.server.js index eef1bdec..f69c914f 100644 --- a/src/routes/(app)/+layout.server.js +++ b/src/routes/(app)/+layout.server.js @@ -6,8 +6,7 @@ export async function load({ cookies, request, url, params }) { let { pathname } = url; let token = cookies.get('token'); let rate, - rates = { USD: 1 }, - subject; + rates = { USD: 1 }; let user; if (token) { @@ -26,23 +25,12 @@ export async function load({ cookies, request, url, params }) { throw redirect(307, '/login'); } - if (user) { - if (!user.pubkey && !url.pathname.includes('gen')) { - throw redirect(307, `/${user.username}/generate`); - } - let account = user.accounts.find((a) => a.asset === btc && !a.pubkey); - if (account) { - let { id } = account; - if (user.account_id !== id) { - user = await post('/shiftAccount', { id }, auth(cookies)); - } - } - } - try { rate = await get('/rate'); rates = await get('/rates'); - } catch (e) {} + } catch (e) { + console.log(e) + } - return { subject, user, token, rate, rates }; + return { user, token, rate, rates }; } diff --git a/src/routes/(app)/[username]/(profile)/+page.server.js b/src/routes/(app)/[username]/(profile)/+page.server.js index 9c91efae..c29ed7df 100644 --- a/src/routes/(app)/[username]/(profile)/+page.server.js +++ b/src/routes/(app)/[username]/(profile)/+page.server.js @@ -3,12 +3,11 @@ import { get } from '$lib/utils'; export async function load({ params, parent, url }) { let { subject } = await parent(); let { pubkey } = subject; - if (!pubkey) pubkey = params.username; let events = []; try { - events = await get(`/nostr/${pubkey}`); + events = await get(`/${pubkey}/notes`); } catch (e) { console.log(`failed to fetch nostr events for ${pubkey}`, e); } diff --git a/src/routes/(app)/[username]/(profile)/messages/+page.svelte b/src/routes/(app)/[username]/(profile)/messages/+page.svelte index dbf02cf2..fd12c6bf 100644 --- a/src/routes/(app)/[username]/(profile)/messages/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/messages/+page.svelte @@ -27,10 +27,10 @@ if (!$messages[user.pubkey][subject.pubkey][m.id]) { m.message = await decrypt({ event: m, user }); $messages[user.pubkey][subject.pubkey][m.id] = m; - tick().then(() => (pane.scrollTop = pane.scrollHeight)); + tick().then(() => pane && (pane.scrollTop = pane.scrollHeight)); } } - tick().then(() => (pane.scrollTop = pane.scrollHeight)); + tick().then(() => pane && (pane.scrollTop = pane.scrollHeight)); }; $: events = @@ -56,7 +56,7 @@ event.id = await calculateId(event); $messages[user.pubkey][subject.pubkey][event.id] = event; $messages = $messages; - tick().then(() => (pane.scrollTop = pane.scrollHeight)); + tick().then(() => pane && (pane.scrollTop = pane.scrollHeight)); try { event.content = await encrypt({ message, recipient: subject.pubkey, user }); diff --git a/src/routes/(app)/[username]/address/+page.server.js b/src/routes/(app)/[username]/address/+page.server.js index c18bcdba..281f9e2d 100644 --- a/src/routes/(app)/[username]/address/+page.server.js +++ b/src/routes/(app)/[username]/address/+page.server.js @@ -8,6 +8,6 @@ export async function load({ cookies, params, parent }) { network: 'bitcoin', rate: rates[user.currency] }; - let { uuid } = await post('/invoice', { invoice, user }, auth(cookies)); - throw redirect(307, `/invoice/${uuid}`); + let { id } = await post('/invoice', { invoice, user }, auth(cookies)); + throw redirect(307, `/invoice/${id}`); } diff --git a/src/routes/(app)/[username]/dashboard/+page.svelte b/src/routes/(app)/[username]/dashboard/+page.svelte index 3fcf8c06..86ec5c0e 100644 --- a/src/routes/(app)/[username]/dashboard/+page.svelte +++ b/src/routes/(app)/[username]/dashboard/+page.svelte @@ -20,7 +20,7 @@ let animateRate = (newRate) => { if (!accountBalanceFiat) return; let t = 0; - let newBalance = (user.account.balance * newRate) / sats; + let newBalance = (user.balance * newRate) / sats; let oldBalance = parseFloat(accountBalanceFiat); let diff = oldBalance - newBalance; let rateDiff = oldRate - newRate; @@ -47,7 +47,7 @@ $: user = data.user; $: accountBalanceFiat = accountBalanceFiat || - (user && $selectedRate && ((user.account.balance * $selectedRate) / sats).toFixed(2)); + (user && $selectedRate && ((user.balance * $selectedRate) / sats).toFixed(2)); let payreq = '', payreqField, @@ -55,7 +55,7 @@ $: btcPrice = f($selectedRate, user.currency); - $: accountBalanceBtc = user.account.balance / sats; + $: accountBalanceBtc = user.balance / sats; </script> <div class="container px-4 max-w-md mx-auto mt-20 space-y-12 mb-8"> @@ -65,7 +65,7 @@ </div> <div class="text-secondary text-2xl"> - ⚡️{s(user.account.balance)} + ⚡️{s(user.balance)} </div> </div> @@ -92,68 +92,68 @@ </a> </div> - <div> - {#each invoices as { request_id, amount, currency, rate, user: recipient, requester, uuid }} - {@const requested = user.username === requester.username} - <a href={`/invoice/${uuid}` + (requested ? '/tip' : '')}> - <div class="border-b p-2 last:border-b-0 hover:bg-gray-100"> - <div class="flex gap-2"> - <div> - {#if requested} - <div class="flex"> - <Avatar user={recipient} size={20} /> - <div class="my-auto text-left"> - <p class="text-secondary">{$t('transactions.invoiceFrom')}</p> - <p class="ml-1 text-lg break-words">{recipient.username}</p> - </div> - </div> - {:else} - <div class="flex"> - <Avatar user={requester} size={20} /> - <div class="my-auto text-left"> - <p class="text-secondary">{$t('transactions.awaiting')}</p> - <p class="ml-1 text-lg break-words">{requester.username}</p> - </div> - </div> - {/if} - </div> - <div class="whitespace-nowrap my-auto ml-auto flex gap-2"> - <div class="font-bold"> - {f(amount * (rate / sats), currency)} - </div> + <!-- <div> --> + <!-- {#each invoices as { request_id, amount, currency, rate, user: recipient, requester, id }} --> + <!-- {@const requested = user.username === requester?.username} --> + <!-- <a href={`/invoice/${id}` + (requested ? '/tip' : '')}> --> + <!-- <div class="border-b p-2 last:border-b-0 hover:bg-gray-100"> --> + <!-- <div class="flex gap-2"> --> + <!-- <div> --> + <!-- {#if requested} --> + <!-- <div class="flex"> --> + <!-- <Avatar user={recipient} size={20} /> --> + <!-- <div class="my-auto text-left"> --> + <!-- <p class="text-secondary">{$t('transactions.invoiceFrom')}</p> --> + <!-- <p class="ml-1 text-lg break-words">{recipient.username}</p> --> + <!-- </div> --> + <!-- </div> --> + <!-- {:else} --> + <!-- <div class="flex"> --> + <!-- <Avatar user={requester} size={20} /> --> + <!-- <div class="my-auto text-left"> --> + <!-- <p class="text-secondary">{$t('transactions.awaiting')}</p> --> + <!-- <p class="ml-1 text-lg break-words">{requester.username}</p> --> + <!-- </div> --> + <!-- </div> --> + <!-- {/if} --> + <!-- </div> --> + <!-- <div class="whitespace-nowrap my-auto ml-auto flex gap-2"> --> + <!-- <div class="font-bold"> --> + <!-- {f(amount * (rate / sats), currency)} --> + <!-- </div> --> + <!-- --> + <!-- <div class="text-secondary">{sat(amount)}</div> --> + <!-- </div> --> + <!-- </div> --> + <!-- </div> --> + <!-- </a> --> + <!-- {/each} --> + <!-- </div> --> - <div class="text-secondary">{sat(amount)}</div> - </div> - </div> - </div> - </a> - {/each} - </div> - - <div> - {#each requests as { id, invoice, memo, requester: r }} - <a href={`/${user.username}/receive/${id}`}> - <div class="border-b p-2 last:border-b-0 hover:bg-gray-100"> - <div class="flex"> - <div> - <div class="flex"> - <Avatar user={r} size={20} /> - <div class="my-auto text-left"> - <p class="ml-1 text-lg break-words">{r.username}</p> - <p class="ml-1 text-secondary">{memo}</p> - </div> - </div> - </div> - <div class="whitespace-nowrap my-auto ml-auto flex gap-2"> - <button class="rounded-full border py-2 px-4 font-bold hover:opacity-80 w-full" - >Invoice</button - > - </div> - </div> - </div> - </a> - {/each} - </div> + <!-- <div> --> + <!-- {#each requests as { id, invoice, memo, requester: r }} --> + <!-- <a href={`/${user.username}/receive/${id}`}> --> + <!-- <div class="border-b p-2 last:border-b-0 hover:bg-gray-100"> --> + <!-- <div class="flex"> --> + <!-- <div> --> + <!-- <div class="flex"> --> + <!-- <Avatar user={r} size={20} /> --> + <!-- <div class="my-auto text-left"> --> + <!-- <p class="ml-1 text-lg break-words">{r.username}</p> --> + <!-- <p class="ml-1 text-secondary">{memo}</p> --> + <!-- </div> --> + <!-- </div> --> + <!-- </div> --> + <!-- <div class="whitespace-nowrap my-auto ml-auto flex gap-2"> --> + <!-- <button class="rounded-full border py-2 px-4 font-bold hover:opacity-80 w-full" --> + <!-- >Invoice</button --> + <!-- > --> + <!-- </div> --> + <!-- </div> --> + <!-- </div> --> + <!-- </a> --> + <!-- {/each} --> + <!-- </div> --> </div> <div class="flex fixed w-full px-4 bg-white py-2 bottom-0 bg-opacity-90"> diff --git a/src/routes/(app)/[username]/receive/[...param]/+page.svelte b/src/routes/(app)/[username]/receive/[...param]/+page.svelte index 548f324f..4559f00c 100644 --- a/src/routes/(app)/[username]/receive/[...param]/+page.svelte +++ b/src/routes/(app)/[username]/receive/[...param]/+page.svelte @@ -21,7 +21,7 @@ let { user } = data; $: paid = browser && form && Object.values($invoices).find((inv) => inv.amount === form.amount); - $: paid && goto(`/invoice/${paid.uuid}/paid`); + $: paid && goto(`/invoice/${paid.id}/paid`); </script> <form method="POST" class="flex justify-center items-center mt-24 mb-3 px-3" use:enhance> @@ -34,7 +34,7 @@ <input type="hidden" name="request_id" value={request.id} /> {/if} - <input type="hidden" name="prompt" value={user?.username === username} /> + <input type="hidden" name="prompt" value={false} /> <div class="space-y-3 w-[300px] mx-auto"> <Numpad bind:amount bind:currency /> diff --git a/src/routes/(app)/[username]/request/[id]/+page.server.js b/src/routes/(app)/[username]/request/[id]/+page.server.js index 7beabfe6..001bd6e0 100644 --- a/src/routes/(app)/[username]/request/[id]/+page.server.js +++ b/src/routes/(app)/[username]/request/[id]/+page.server.js @@ -9,14 +9,14 @@ export let load = async ({ cookies, depends, locals: { user }, params }) => { let { invoice } = request; if (invoice) { - let { amount, received, uuid } = invoice; + let { amount, received, id } = invoice; if ( request.recipient.username === user.username && ((received && !amount) || received >= amount) ) - throw redirect(307, `/invoice/${uuid}/paid`); + throw redirect(307, `/invoice/${id}/paid`); - if (request.requester.username === user.username) throw redirect(307, `/send/${uuid}`); + if (request.requester.username === user.username) throw redirect(307, `/send/${id}`); } return { request }; diff --git a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte index 92946544..94ca2223 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte @@ -78,7 +78,7 @@ content: JSON.stringify({ name: user.username, about: user.address, - picture: `${PUBLIC_COINOS_URL}/public/${user.uuid}-profile.webp` + picture: `${PUBLIC_COINOS_URL}/public/${user.id}-profile.webp` }), tags: [] }; diff --git a/src/routes/(app)/[username]/settings/[...tab]/_account.svelte b/src/routes/(app)/[username]/settings/[...tab]/_account.svelte index ba046735..93b5442d 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/_account.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/_account.svelte @@ -97,7 +97,7 @@ on:keydown={() => select('profile')} > <img - src={`/api/public/${user.uuid}-profile.webp`} + src={`/api/public/${user.id}-profile.webp`} class="absolute w-full h-full object-cover object-center visible overflow-hidden" alt={user.username} /> @@ -151,7 +151,7 @@ /> {:else if user.banner} <img - src={`/api/public/${user.uuid}-banner.webp`} + src={`/api/public/${user.id}-banner.webp`} class="w-full object-cover object-center visible overflow-hidden h-48 mb-4 hover:opacity-80" on:click={() => select('banner')} on:keydown={() => select('banner')} diff --git a/src/routes/(app)/events/+server.js b/src/routes/(app)/events/+server.js index d0b1242f..decd43cb 100644 --- a/src/routes/(app)/events/+server.js +++ b/src/routes/(app)/events/+server.js @@ -2,5 +2,5 @@ import { auth, post } from '$lib/utils'; import { json } from '@sveltejs/kit'; export async function POST({ cookies, request }) { - return json(post('/nostr/send', await request.json(), auth(cookies))); + return json(post('/event', await request.json(), auth(cookies))); } diff --git a/src/routes/(app)/invoice/[id]/+layout.server.js b/src/routes/(app)/invoice/[id]/+layout.server.js index b4d7d496..adcea6df 100644 --- a/src/routes/(app)/invoice/[id]/+layout.server.js +++ b/src/routes/(app)/invoice/[id]/+layout.server.js @@ -6,7 +6,7 @@ export async function load({ depends, params, url }) { depends('app:invoice'); let { id } = params; - let invoice = await get(`/invoice?uuid=${id}`); + let invoice = await get(`/invoice?id=${id}`); let { amount, received, pending } = invoice; amount = parseInt(amount); diff --git a/src/routes/(app)/invoice/[id]/+page.svelte b/src/routes/(app)/invoice/[id]/+page.svelte index 5eadb179..db491c66 100644 --- a/src/routes/(app)/invoice/[id]/+page.svelte +++ b/src/routes/(app)/invoice/[id]/+page.svelte @@ -22,7 +22,7 @@ prompt, text, tip, - user: { username, currency, uuid } + user: { username, currency } } = invoice; let showQr = !amount; @@ -43,7 +43,7 @@ prompt, text, tip, - user: { username, currency, uuid } + user: { username, currency } } = invoice); tipPercent = (tip / amount) * 100; @@ -108,7 +108,7 @@ > {#if user && user.username !== username} - <a href={`/send/${invoice.uuid}`}> + <a href={`/send/${invoice.id}`}> <button class="flex rounded-full border py-2 px-5 font-bold hover:opacity-80"> <Icon icon="send" style="mr-1" /> <div class="my-auto">Pay</div> diff --git a/src/routes/(app)/invoice/[id]/paid/+page.svelte b/src/routes/(app)/invoice/[id]/paid/+page.svelte index ec0f6fae..2ce414e2 100644 --- a/src/routes/(app)/invoice/[id]/paid/+page.svelte +++ b/src/routes/(app)/invoice/[id]/paid/+page.svelte @@ -9,8 +9,8 @@ import { invoices } from '$lib/store'; export let data; - let amount, currency, rate, received, pending, tip, user, uuid; - $: data && ({ amount, currency, rate, received, pending, tip, user, uuid } = data.invoice); + let amount, currency, rate, received, pending, tip, user, id; + $: data && ({ amount, currency, rate, received, pending, tip, user, id } = data.invoice); toast.pop(0); diff --git a/src/routes/(app)/invoice/[id]/tip/+page.server.js b/src/routes/(app)/invoice/[id]/tip/+page.server.js index dd618b8a..c78e5020 100644 --- a/src/routes/(app)/invoice/[id]/tip/+page.server.js +++ b/src/routes/(app)/invoice/[id]/tip/+page.server.js @@ -3,7 +3,7 @@ import { redirect } from '@sveltejs/kit'; export async function load({ parent }) { let { invoice } = await parent(); - if (!invoice.amount) throw redirect(307, `/invoice/${invoice.uuid}`); + if (!invoice.amount) throw redirect(307, `/invoice/${invoice.id}`); } export const actions = { diff --git a/src/routes/(app)/launch/purchase/+page.server.js b/src/routes/(app)/launch/purchase/+page.server.js index 2ecce695..98ae51eb 100644 --- a/src/routes/(app)/launch/purchase/+page.server.js +++ b/src/routes/(app)/launch/purchase/+page.server.js @@ -38,8 +38,8 @@ export const actions = { let user = { username: form.get('username') }; - let { uuid } = await post('/invoice', { invoice, user }, auth(cookies)); + let { id } = await post('/invoice', { invoice, user }, auth(cookies)); - throw redirect(307, `/invoice/${uuid}`); + throw redirect(307, `/invoice/${id}`); } }; diff --git a/src/routes/(app)/login/+page.server.js b/src/routes/(app)/login/+page.server.js index 4c4a957e..873b68d4 100644 --- a/src/routes/(app)/login/+page.server.js +++ b/src/routes/(app)/login/+page.server.js @@ -14,6 +14,7 @@ export const actions = { try { let r = await login(user, cookies); + console.log("R", r) } catch (e) { return invalid(400, { error: 'Login failed', message: e.message, ...form }); } diff --git a/src/routes/(app)/send/[...text]/+page.server.js b/src/routes/(app)/send/[...text]/+page.server.js index ee31ade7..eab57d64 100644 --- a/src/routes/(app)/send/[...text]/+page.server.js +++ b/src/routes/(app)/send/[...text]/+page.server.js @@ -6,7 +6,7 @@ import { invalid, redirect } from '@sveltejs/kit'; let parse = async (t, host) => { if (!t) return; - let amount, user, uuid; + let amount, user, id; t = t.trim(); t.toLowerCase().startsWith('bitcoin:') && @@ -34,25 +34,25 @@ let parse = async (t, host) => { // lightning if (t.toLowerCase().startsWith('ln')) { try { - ({ uuid } = await get(`/invoice/${t}`)); + ({ id } = await get(`/invoice/${t}`)); } catch (e) { throw redirect(307, `/send/lightning/${t}`); } - if (uuid) throw redirect(307, `/send/${uuid}`); + if (id) throw redirect(307, `/send/${id}`); } // bitcoin if (validate(t)) { try { - ({ uuid } = await get(`/invoice/${t}`)); + ({ id } = await get(`/invoice/${t}`)); } catch (e) { let r = `/send/bitcoin/${t}`; if (amount) r += '/' + amount; throw redirect(307, r); } - if (uuid) throw redirect(307, `/send/${uuid}`); + if (id) throw redirect(307, `/send/${id}`); } // user diff --git a/src/routes/(app)/send/[uuid=uuid]/+page.server.js b/src/routes/(app)/send/[uuid=uuid]/+page.server.js index 63192b7a..dd6fb82d 100644 --- a/src/routes/(app)/send/[uuid=uuid]/+page.server.js +++ b/src/routes/(app)/send/[uuid=uuid]/+page.server.js @@ -4,7 +4,7 @@ import { btc as asset, auth, get, post } from '$lib/utils'; export async function load({ params, parent }) { let { user } = await parent(); - let { amount, address, tip, text, user: recipient } = await get(`/invoice/${params.uuid}`); + let { amount, address, tip, text, user: recipient } = await get(`/invoice/${params.id}`); if (recipient.username === user.username) throw error(500, { message: 'Cannot send to self' }); if (tip) amount += tip; return { amount, address, payreq: text, recipient }; |
