From 75e1e4e6aa2dbc7d400df1860758db28bf44b7a3 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 13 Jan 2023 20:26:53 -0800 Subject: server redis migration --- package.json | 7 +- pnpm-lock.yaml | 29 ++--- src/components/AppHeader.svelte | 2 +- src/components/Avatar.svelte | 2 +- src/components/Invoice.svelte | 2 +- src/lib/invoice.js | 10 +- src/lib/socket.js | 1 - src/routes/(app)/+layout.server.js | 22 +--- .../(app)/[username]/(profile)/+page.server.js | 3 +- .../[username]/(profile)/messages/+page.svelte | 6 +- .../(app)/[username]/address/+page.server.js | 4 +- src/routes/(app)/[username]/dashboard/+page.svelte | 132 ++++++++++----------- .../[username]/receive/[...param]/+page.svelte | 4 +- .../(app)/[username]/request/[id]/+page.server.js | 6 +- .../[username]/settings/[...tab]/+page.svelte | 2 +- .../[username]/settings/[...tab]/_account.svelte | 4 +- src/routes/(app)/events/+server.js | 2 +- src/routes/(app)/invoice/[id]/+layout.server.js | 2 +- src/routes/(app)/invoice/[id]/+page.svelte | 6 +- src/routes/(app)/invoice/[id]/paid/+page.svelte | 4 +- src/routes/(app)/invoice/[id]/tip/+page.server.js | 2 +- src/routes/(app)/launch/purchase/+page.server.js | 4 +- src/routes/(app)/login/+page.server.js | 1 + src/routes/(app)/send/[...text]/+page.server.js | 10 +- src/routes/(app)/send/[uuid=uuid]/+page.server.js | 2 +- 25 files changed, 126 insertions(+), 143 deletions(-) diff --git a/package.json b/package.json index 277c5993..f0fbaa1f 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "bolt11": "^1.4.0", "buffer": "^6.0.3", "date-fns": "^2.29.3", + "dexie": "^3.2.2", "leaflet": "^1.9.3", "leaflet.markercluster": "^1.5.3", "nostr": "^0.2.7", @@ -48,9 +49,9 @@ }, "pnpm": { "peerDependencyRules": { - "ignoreMissing": [ - "vite" - ] + "allowedVersions": { + "vite": "4" + } } }, "type": "module" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7f5b10a4..c1a2def8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,6 +13,7 @@ specifiers: bolt11: ^1.4.0 buffer: ^6.0.3 date-fns: ^2.29.3 + dexie: ^3.2.2 leaflet: ^1.9.3 leaflet.markercluster: ^1.5.3 nostr: ^0.2.7 @@ -50,6 +51,7 @@ devDependencies: bolt11: 1.4.0 buffer: 6.0.3 date-fns: 2.29.3 + dexie: 3.2.2 leaflet: 1.9.3 leaflet.markercluster: 1.5.3_leaflet@1.9.3 nostr: 0.2.7 @@ -427,10 +429,7 @@ packages: requiresBuild: true peerDependencies: svelte: ^3.44.0 - vite: ^3.2.0 - peerDependenciesMeta: - vite: - optional: true + vite: ^3.2.0 || 4 dependencies: '@sveltejs/vite-plugin-svelte': 1.4.0_svelte@3.55.0+vite@4.0.3 '@types/cookie': 0.5.1 @@ -455,10 +454,7 @@ packages: engines: {node: ^14.18.0 || >= 16} peerDependencies: svelte: ^3.44.0 - vite: ^3.0.0 - peerDependenciesMeta: - vite: - optional: true + vite: ^3.0.0 || 4 dependencies: debug: 4.3.4 deepmerge: 4.2.2 @@ -1144,6 +1140,11 @@ packages: resolution: {integrity: sha512-mbjoAaCL2qogBKgeFxFPOXAUsZchircF+B/79LD4sHH0+NHfYm8gZpQrskKDn5gENGt35+5OI1GUF7hLVnkPDw==} dev: true + /dexie/3.2.2: + resolution: {integrity: sha512-q5dC3HPmir2DERlX+toCBbHQXW5MsyrFqPFcovkH9N2S/UW/H3H5AWAB6iEOExeraAu+j+zRDG+zg/D7YhH0qg==} + engines: {node: '>=6.0'} + dev: true + /didyoumean/1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true @@ -2659,10 +2660,7 @@ packages: /vite-plugin-node-polyfills/0.5.0_rollup@2.79.1+vite@4.0.3: resolution: {integrity: sha512-zaTCjL64pJY6RDeP4ZZ1rtFKFTy44RYFtFIISKk3LclIeD/yR9tqpscj5x+jXhD7Bh1HYk2a7uu1aCFEYiUlIA==} peerDependencies: - vite: ^2.0.0 || ^3.0.0 - peerDependenciesMeta: - vite: - optional: true + vite: ^2.0.0 || ^3.0.0 || 4 dependencies: '@rollup/plugin-inject': 4.0.4_rollup@2.79.1 node-stdlib-browser: 1.2.0 @@ -2674,10 +2672,7 @@ packages: /vite-plugin-top-level-await/1.2.2_vite@4.0.3: resolution: {integrity: sha512-JBuY9X5KCxZyzwQUOIBpgX0Jbe2BECxwElWPeyrdRC5xaWzDibTG65QBW25COmwqHBeVlV04u8GTlJkuOWhfgw==} peerDependencies: - vite: '>=2.8' - peerDependenciesMeta: - vite: - optional: true + vite: '>=2.8 || 4' dependencies: '@swc/core': 1.3.24 vite: 4.0.3 @@ -2765,7 +2760,7 @@ packages: /vitefu/0.2.4_vite@4.0.3: resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} peerDependencies: - vite: ^3.0.0 || ^4.0.0 + vite: ^3.0.0 || ^4.0.0 || 4 peerDependenciesMeta: vite: optional: true 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); 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')); 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 @@
- + 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;
@@ -65,7 +65,7 @@
- ⚡️{s(user.account.balance)} + ⚡️{s(user.balance)}
@@ -92,68 +92,68 @@ -
- {#each invoices as { request_id, amount, currency, rate, user: recipient, requester, uuid }} - {@const requested = user.username === requester.username} - -
-
-
- {#if requested} -
- -
-

{$t('transactions.invoiceFrom')}

-

{recipient.username}

-
-
- {:else} -
- -
-

{$t('transactions.awaiting')}

-

{requester.username}

-
-
- {/if} -
-
-
- {f(amount * (rate / sats), currency)} -
- -
{sat(amount)}
-
-
-
-
- {/each} -
- -
- {#each requests as { id, invoice, memo, requester: r }} - -
-
-
-
- -
-

{r.username}

-

{memo}

-
-
-
-
- -
-
-
-
- {/each} -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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`);
@@ -34,7 +34,7 @@ {/if} - +
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')} > {user.username} @@ -151,7 +151,7 @@ /> {:else if user.banner} 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} - +