From f0d88333750a2865d3016e92620a87269160effa Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 2 Nov 2022 19:47:29 -0700 Subject: move to app layout --- src/lib/socket.js | 10 +- src/lib/utils.js | 8 + src/locales/en.json | 2 + src/routes/(app)/+error.svelte | 26 +++ src/routes/(app)/+layout.server.js | 42 ++++ src/routes/(app)/+layout.svelte | 87 +++++++ src/routes/(app)/[username]/+layout.svelte | 7 + src/routes/(app)/[username]/+page.server.js | 6 + src/routes/(app)/[username]/+page.svelte | 85 +++++++ .../(app)/[username]/bitcoin/+page.server.js | 4 + src/routes/(app)/[username]/bitcoin/+page.svelte | 0 src/routes/(app)/[username]/customers/+page.svelte | 0 .../(app)/[username]/dashboard/+page.server.js | 1 + src/routes/(app)/[username]/dashboard/+page.svelte | 76 ++++++ .../(app)/[username]/receive/+page.server.js | 5 + src/routes/(app)/[username]/receive/+page.svelte | 30 +++ .../receive/[network]/[amount]/+page.server.js | 0 .../receive/[network]/[amount]/+page.svelte | 1 + .../(app)/[username]/settings/+page.server.js | 21 ++ src/routes/(app)/[username]/settings/+page.svelte | 104 +++++++++ .../(app)/[username]/settings/_account.svelte | 255 +++++++++++++++++++++ src/routes/(app)/[username]/settings/_pos.svelte | 27 +++ .../(app)/[username]/settings/_security.svelte | 218 ++++++++++++++++++ .../(app)/[username]/support/+page.server.js | 13 ++ src/routes/(app)/[username]/support/+page.svelte | 76 ++++++ .../transactions/[...page]/+page.server.js | 24 ++ .../[username]/transactions/[...page]/+page.svelte | 164 +++++++++++++ src/routes/(app)/disable2fa/+server.js | 8 + src/routes/(app)/enable2fa/+server.js | 8 + src/routes/(app)/invoice/[id]/+layout.server.js | 14 ++ src/routes/(app)/invoice/[id]/+layout.svelte | 1 + src/routes/(app)/invoice/[id]/+page.server.js | 5 + src/routes/(app)/invoice/[id]/+page.svelte | 134 +++++++++++ src/routes/(app)/invoice/[id]/paid/+page.svelte | 40 ++++ src/routes/(app)/invoice/[id]/tip/+page.server.js | 5 + src/routes/(app)/invoice/[id]/tip/+page.svelte | 251 ++++++++++++++++++++ src/routes/(app)/jobs/+page.svelte | 30 +++ src/routes/(app)/launch/+page.server.js | 6 + src/routes/(app)/launch/+page.svelte | 103 +++++++++ src/routes/(app)/launch/purchase/+page.server.js | 45 ++++ src/routes/(app)/launch/purchase/+page.svelte | 67 ++++++ .../(app)/launch/purchase/card/+page.server.js | 44 ++++ src/routes/(app)/launch/purchase/card/+page.svelte | 77 +++++++ src/routes/(app)/launch/register/+page.svelte | 1 + .../(app)/launch/thanks/[asset]/+page.server.js | 1 + .../(app)/launch/thanks/[asset]/+page.svelte | 29 +++ src/routes/(app)/launch/ticket/+page.server.js | 9 + src/routes/(app)/launch/ticket/+page.svelte | 35 +++ src/routes/(app)/locations/+server.js | 7 + src/routes/(app)/login/+page.server.js | 18 ++ src/routes/(app)/login/+page.svelte | 7 + src/routes/(app)/logout/+page.server.js | 12 + src/routes/(app)/logout/+page.svelte | 0 src/routes/(app)/news/+page.svelte | 115 ++++++++++ src/routes/(app)/register/+page.server.js | 28 +++ src/routes/(app)/register/+page.svelte | 15 ++ src/routes/(app)/scan/+page.svelte | 44 ++++ src/routes/(app)/send/+layout.svelte | 18 ++ src/routes/(app)/send/[...text]/+page.server.js | 60 +++++ src/routes/(app)/send/[...text]/+page.svelte | 94 ++++++++ src/routes/(app)/send/[uuid=uuid]/+page.server.js | 28 +++ src/routes/(app)/send/[uuid=uuid]/+page.svelte | 101 ++++++++ .../(app)/send/bitcoin/[address]/+page.server.js | 16 ++ .../(app)/send/bitcoin/[address]/+page.svelte | 58 +++++ .../(app)/send/lightning/[payreq]/+page.server.js | 27 +++ .../(app)/send/lightning/[payreq]/+page.svelte | 70 ++++++ src/routes/(app)/send/lnurl/+page.svelte | 0 .../user/[username]/[...amount]/+page.server.js | 29 +++ .../send/user/[username]/[...amount]/+page.svelte | 103 +++++++++ src/routes/(app)/sent/+page.svelte | 34 +++ src/routes/(app)/user/+server.js | 15 ++ src/routes/(app)/withdraw/+server.js | 8 + src/routes/+error.svelte | 26 --- src/routes/+layout.server.js | 42 ---- src/routes/+layout.svelte | 75 +----- src/routes/[username]/+layout.svelte | 7 - src/routes/[username]/+page.server.js | 6 - src/routes/[username]/+page.svelte | 90 -------- src/routes/[username]/bitcoin/+page.server.js | 4 - src/routes/[username]/bitcoin/+page.svelte | 0 src/routes/[username]/customers/+page.svelte | 0 src/routes/[username]/dashboard/+page.server.js | 1 - src/routes/[username]/dashboard/+page.svelte | 76 ------ src/routes/[username]/receive/+page.server.js | 5 - src/routes/[username]/receive/+page.svelte | 30 --- .../receive/[network]/[amount]/+page.server.js | 0 .../receive/[network]/[amount]/+page.svelte | 1 - src/routes/[username]/settings/+page.server.js | 21 -- src/routes/[username]/settings/+page.svelte | 104 --------- src/routes/[username]/settings/_account.svelte | 255 --------------------- src/routes/[username]/settings/_pos.svelte | 27 --- src/routes/[username]/settings/_security.svelte | 218 ------------------ src/routes/[username]/support/+page.server.js | 13 -- src/routes/[username]/support/+page.svelte | 76 ------ .../transactions/[...page]/+page.server.js | 24 -- .../[username]/transactions/[...page]/+page.svelte | 164 ------------- src/routes/disable2fa/+server.js | 8 - src/routes/enable2fa/+server.js | 8 - src/routes/invoice/[id]/+layout.server.js | 14 -- src/routes/invoice/[id]/+layout.svelte | 1 - src/routes/invoice/[id]/+page.server.js | 5 - src/routes/invoice/[id]/+page.svelte | 125 ---------- src/routes/invoice/[id]/paid/+page.svelte | 40 ---- src/routes/invoice/[id]/tip/+page.server.js | 5 - src/routes/invoice/[id]/tip/+page.svelte | 252 -------------------- src/routes/jobs/+page.svelte | 30 --- src/routes/launch/+page.server.js | 6 - src/routes/launch/+page.svelte | 103 --------- src/routes/launch/purchase/+page.server.js | 45 ---- src/routes/launch/purchase/+page.svelte | 67 ------ src/routes/launch/purchase/card/+page.server.js | 44 ---- src/routes/launch/purchase/card/+page.svelte | 77 ------- src/routes/launch/register/+page.svelte | 1 - src/routes/launch/thanks/[asset]/+page.server.js | 1 - src/routes/launch/thanks/[asset]/+page.svelte | 29 --- src/routes/launch/ticket/+page.server.js | 9 - src/routes/launch/ticket/+page.svelte | 35 --- src/routes/locations/+server.js | 7 - src/routes/login/+page.server.js | 18 -- src/routes/login/+page.svelte | 7 - src/routes/logout/+page.server.js | 12 - src/routes/logout/+page.svelte | 0 src/routes/news/+page.svelte | 115 ---------- src/routes/register/+page.server.js | 28 --- src/routes/register/+page.svelte | 15 -- src/routes/scan/+page.svelte | 44 ---- src/routes/send/+layout.svelte | 18 -- src/routes/send/[...text]/+page.server.js | 60 ----- src/routes/send/[...text]/+page.svelte | 94 -------- src/routes/send/[uuid=uuid]/+page.server.js | 28 --- src/routes/send/[uuid=uuid]/+page.svelte | 101 -------- src/routes/send/bitcoin/[address]/+page.server.js | 16 -- src/routes/send/bitcoin/[address]/+page.svelte | 58 ----- src/routes/send/lightning/[payreq]/+page.server.js | 27 --- src/routes/send/lightning/[payreq]/+page.svelte | 70 ------ src/routes/send/lnurl/+page.svelte | 0 .../user/[username]/[...amount]/+page.server.js | 29 --- .../send/user/[username]/[...amount]/+page.svelte | 103 --------- src/routes/sent/+page.svelte | 34 --- src/routes/user/+server.js | 15 -- src/routes/withdraw/+server.js | 8 - 141 files changed, 3112 insertions(+), 3077 deletions(-) create mode 100644 src/routes/(app)/+error.svelte create mode 100644 src/routes/(app)/+layout.server.js create mode 100644 src/routes/(app)/+layout.svelte create mode 100644 src/routes/(app)/[username]/+layout.svelte create mode 100644 src/routes/(app)/[username]/+page.server.js create mode 100644 src/routes/(app)/[username]/+page.svelte create mode 100644 src/routes/(app)/[username]/bitcoin/+page.server.js create mode 100644 src/routes/(app)/[username]/bitcoin/+page.svelte create mode 100644 src/routes/(app)/[username]/customers/+page.svelte create mode 100644 src/routes/(app)/[username]/dashboard/+page.server.js create mode 100644 src/routes/(app)/[username]/dashboard/+page.svelte create mode 100644 src/routes/(app)/[username]/receive/+page.server.js create mode 100644 src/routes/(app)/[username]/receive/+page.svelte create mode 100644 src/routes/(app)/[username]/receive/[network]/[amount]/+page.server.js create mode 100644 src/routes/(app)/[username]/receive/[network]/[amount]/+page.svelte create mode 100644 src/routes/(app)/[username]/settings/+page.server.js create mode 100644 src/routes/(app)/[username]/settings/+page.svelte create mode 100644 src/routes/(app)/[username]/settings/_account.svelte create mode 100644 src/routes/(app)/[username]/settings/_pos.svelte create mode 100644 src/routes/(app)/[username]/settings/_security.svelte create mode 100644 src/routes/(app)/[username]/support/+page.server.js create mode 100644 src/routes/(app)/[username]/support/+page.svelte create mode 100644 src/routes/(app)/[username]/transactions/[...page]/+page.server.js create mode 100644 src/routes/(app)/[username]/transactions/[...page]/+page.svelte create mode 100644 src/routes/(app)/disable2fa/+server.js create mode 100644 src/routes/(app)/enable2fa/+server.js create mode 100644 src/routes/(app)/invoice/[id]/+layout.server.js create mode 100644 src/routes/(app)/invoice/[id]/+layout.svelte create mode 100644 src/routes/(app)/invoice/[id]/+page.server.js create mode 100644 src/routes/(app)/invoice/[id]/+page.svelte create mode 100644 src/routes/(app)/invoice/[id]/paid/+page.svelte create mode 100644 src/routes/(app)/invoice/[id]/tip/+page.server.js create mode 100644 src/routes/(app)/invoice/[id]/tip/+page.svelte create mode 100644 src/routes/(app)/jobs/+page.svelte create mode 100644 src/routes/(app)/launch/+page.server.js create mode 100644 src/routes/(app)/launch/+page.svelte create mode 100644 src/routes/(app)/launch/purchase/+page.server.js create mode 100644 src/routes/(app)/launch/purchase/+page.svelte create mode 100644 src/routes/(app)/launch/purchase/card/+page.server.js create mode 100644 src/routes/(app)/launch/purchase/card/+page.svelte create mode 100644 src/routes/(app)/launch/register/+page.svelte create mode 100644 src/routes/(app)/launch/thanks/[asset]/+page.server.js create mode 100644 src/routes/(app)/launch/thanks/[asset]/+page.svelte create mode 100644 src/routes/(app)/launch/ticket/+page.server.js create mode 100644 src/routes/(app)/launch/ticket/+page.svelte create mode 100644 src/routes/(app)/locations/+server.js create mode 100644 src/routes/(app)/login/+page.server.js create mode 100644 src/routes/(app)/login/+page.svelte create mode 100644 src/routes/(app)/logout/+page.server.js create mode 100644 src/routes/(app)/logout/+page.svelte create mode 100644 src/routes/(app)/news/+page.svelte create mode 100644 src/routes/(app)/register/+page.server.js create mode 100644 src/routes/(app)/register/+page.svelte create mode 100644 src/routes/(app)/scan/+page.svelte create mode 100644 src/routes/(app)/send/+layout.svelte create mode 100644 src/routes/(app)/send/[...text]/+page.server.js create mode 100644 src/routes/(app)/send/[...text]/+page.svelte create mode 100644 src/routes/(app)/send/[uuid=uuid]/+page.server.js create mode 100644 src/routes/(app)/send/[uuid=uuid]/+page.svelte create mode 100644 src/routes/(app)/send/bitcoin/[address]/+page.server.js create mode 100644 src/routes/(app)/send/bitcoin/[address]/+page.svelte create mode 100644 src/routes/(app)/send/lightning/[payreq]/+page.server.js create mode 100644 src/routes/(app)/send/lightning/[payreq]/+page.svelte create mode 100644 src/routes/(app)/send/lnurl/+page.svelte create mode 100644 src/routes/(app)/send/user/[username]/[...amount]/+page.server.js create mode 100644 src/routes/(app)/send/user/[username]/[...amount]/+page.svelte create mode 100644 src/routes/(app)/sent/+page.svelte create mode 100644 src/routes/(app)/user/+server.js create mode 100644 src/routes/(app)/withdraw/+server.js delete mode 100644 src/routes/+error.svelte delete mode 100644 src/routes/+layout.server.js delete mode 100644 src/routes/[username]/+layout.svelte delete mode 100644 src/routes/[username]/+page.server.js delete mode 100644 src/routes/[username]/+page.svelte delete mode 100644 src/routes/[username]/bitcoin/+page.server.js delete mode 100644 src/routes/[username]/bitcoin/+page.svelte delete mode 100644 src/routes/[username]/customers/+page.svelte delete mode 100644 src/routes/[username]/dashboard/+page.server.js delete mode 100644 src/routes/[username]/dashboard/+page.svelte delete mode 100644 src/routes/[username]/receive/+page.server.js delete mode 100644 src/routes/[username]/receive/+page.svelte delete mode 100644 src/routes/[username]/receive/[network]/[amount]/+page.server.js delete mode 100644 src/routes/[username]/receive/[network]/[amount]/+page.svelte delete mode 100644 src/routes/[username]/settings/+page.server.js delete mode 100644 src/routes/[username]/settings/+page.svelte delete mode 100644 src/routes/[username]/settings/_account.svelte delete mode 100644 src/routes/[username]/settings/_pos.svelte delete mode 100644 src/routes/[username]/settings/_security.svelte delete mode 100644 src/routes/[username]/support/+page.server.js delete mode 100644 src/routes/[username]/support/+page.svelte delete mode 100644 src/routes/[username]/transactions/[...page]/+page.server.js delete mode 100644 src/routes/[username]/transactions/[...page]/+page.svelte delete mode 100644 src/routes/disable2fa/+server.js delete mode 100644 src/routes/enable2fa/+server.js delete mode 100644 src/routes/invoice/[id]/+layout.server.js delete mode 100644 src/routes/invoice/[id]/+layout.svelte delete mode 100644 src/routes/invoice/[id]/+page.server.js delete mode 100644 src/routes/invoice/[id]/+page.svelte delete mode 100644 src/routes/invoice/[id]/paid/+page.svelte delete mode 100644 src/routes/invoice/[id]/tip/+page.server.js delete mode 100644 src/routes/invoice/[id]/tip/+page.svelte delete mode 100644 src/routes/jobs/+page.svelte delete mode 100644 src/routes/launch/+page.server.js delete mode 100644 src/routes/launch/+page.svelte delete mode 100644 src/routes/launch/purchase/+page.server.js delete mode 100644 src/routes/launch/purchase/+page.svelte delete mode 100644 src/routes/launch/purchase/card/+page.server.js delete mode 100644 src/routes/launch/purchase/card/+page.svelte delete mode 100644 src/routes/launch/register/+page.svelte delete mode 100644 src/routes/launch/thanks/[asset]/+page.server.js delete mode 100644 src/routes/launch/thanks/[asset]/+page.svelte delete mode 100644 src/routes/launch/ticket/+page.server.js delete mode 100644 src/routes/launch/ticket/+page.svelte delete mode 100644 src/routes/locations/+server.js delete mode 100644 src/routes/login/+page.server.js delete mode 100644 src/routes/login/+page.svelte delete mode 100644 src/routes/logout/+page.server.js delete mode 100644 src/routes/logout/+page.svelte delete mode 100644 src/routes/news/+page.svelte delete mode 100644 src/routes/register/+page.server.js delete mode 100644 src/routes/register/+page.svelte delete mode 100644 src/routes/scan/+page.svelte delete mode 100644 src/routes/send/+layout.svelte delete mode 100644 src/routes/send/[...text]/+page.server.js delete mode 100644 src/routes/send/[...text]/+page.svelte delete mode 100644 src/routes/send/[uuid=uuid]/+page.server.js delete mode 100644 src/routes/send/[uuid=uuid]/+page.svelte delete mode 100644 src/routes/send/bitcoin/[address]/+page.server.js delete mode 100644 src/routes/send/bitcoin/[address]/+page.svelte delete mode 100644 src/routes/send/lightning/[payreq]/+page.server.js delete mode 100644 src/routes/send/lightning/[payreq]/+page.svelte delete mode 100644 src/routes/send/lnurl/+page.svelte delete mode 100644 src/routes/send/user/[username]/[...amount]/+page.server.js delete mode 100644 src/routes/send/user/[username]/[...amount]/+page.svelte delete mode 100644 src/routes/sent/+page.svelte delete mode 100644 src/routes/user/+server.js delete mode 100644 src/routes/withdraw/+server.js (limited to 'src') diff --git a/src/lib/socket.js b/src/lib/socket.js index df20fdd8..94c1802e 100644 --- a/src/lib/socket.js +++ b/src/lib/socket.js @@ -6,7 +6,7 @@ import { env } from '$env/dynamic/public'; const socketUrl = env.PUBLIC_SOCKET; const btc = env.PUBLIC_BTC; -let interval, socket, token; +let socket, token; export const auth = () => token && send('login', token); @@ -15,19 +15,23 @@ export const send = (type, data) => { }; export const messages = (data) => ({ - rate() { + id() { last.set(Date.now()); + }, + + rate() { rate.set(data); }, async payment() { let { amount, invoice } = data; - if (get(user).account_id !== data.account_id) return; if (invoice) { invoices.set({ ...get(invoices), [invoice.uuid]: invoice }); } + if (get(user).account_id !== data.account_id) return; + newPayment.set(true); if (amount > 0) { success(`Received ${amount} sats!`); diff --git a/src/lib/utils.js b/src/lib/utils.js index 41435bf6..e2c8f955 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -144,3 +144,11 @@ export const sats = 100000000; export const back = () => browser && history.go(-1); export const focus = (el) => setTimeout(() => el.focus()); + + +export const wait = async (f, s = 300) => { + let i = 0; + while (!(await f()) && i < s) (await sleep(1000)) && i++; + if (i >= s) throw new Error("timeout"); + return f(); +}; diff --git a/src/locales/en.json b/src/locales/en.json index b3ecbed2..be7baa71 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -160,6 +160,8 @@ "update1": "" }, "user": { + "unfollow": "Unfollow", + "following": "Following", "follow": "Follow", "remove": "Remove", "scanToPayBTC": "Scan to pay with bitcoin", diff --git a/src/routes/(app)/+error.svelte b/src/routes/(app)/+error.svelte new file mode 100644 index 00000000..d561b111 --- /dev/null +++ b/src/routes/(app)/+error.svelte @@ -0,0 +1,26 @@ + + +{#if $page.error.message.includes('not found') || $page.status === 404} + +{:else} +
+

+ {$t('error.header')} +

+ +

{$page.error.message}

+ + +
+{/if} diff --git a/src/routes/(app)/+layout.server.js b/src/routes/(app)/+layout.server.js new file mode 100644 index 00000000..6d1fc3e0 --- /dev/null +++ b/src/routes/(app)/+layout.server.js @@ -0,0 +1,42 @@ +import { error, redirect } from '@sveltejs/kit'; +import { protectedRoutes } from '$lib/utils'; +import { get, post, auth } from '$lib/utils'; +import { env } from '$env/dynamic/public'; + +export const { PUBLIC_BTC: btc } = env; + +export async function load({ cookies, locals, request, url, params }) { + url.pathname; + let token = cookies.get('token'); + let user; + let rates; + let subject; + + if (params.username) { + subject = await get(`/users/${params.username}`); + } + + if (token && token !== 'undefined') { + user = locals.user; + + if (protectedRoutes.find((p) => url.pathname.match(p))) { + if (user.username !== params.username) throw error(404, 'user not found'); + } + + if (['/login', '/register'].includes(url.pathname)) + throw redirect(307, `/${user.username}/dashboard`); + + 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)); + } + } + } + + let rate = await get('/rate'); + rates = await get('/rates'); + + return { subject, user, token, rate, rates }; +} diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte new file mode 100644 index 00000000..10b16449 --- /dev/null +++ b/src/routes/(app)/+layout.svelte @@ -0,0 +1,87 @@ + + + + {#if subject} + coinos - {subject.username} + + {:else} + coinos + {/if} + + {#if subject?.profile} + + {:else} + + {/if} + + + + +{#if lost} +
+ Lost connection to server, try refreshing +
+{/if} + +
+ +
diff --git a/src/routes/(app)/[username]/+layout.svelte b/src/routes/(app)/[username]/+layout.svelte new file mode 100644 index 00000000..b2efa894 --- /dev/null +++ b/src/routes/(app)/[username]/+layout.svelte @@ -0,0 +1,7 @@ + + + + diff --git a/src/routes/(app)/[username]/+page.server.js b/src/routes/(app)/[username]/+page.server.js new file mode 100644 index 00000000..0840161a --- /dev/null +++ b/src/routes/(app)/[username]/+page.server.js @@ -0,0 +1,6 @@ +import { get, post } from '$lib/utils'; + +export async function load({ params }) { + let { username } = params; + return get(`/users/${username}`); +} diff --git a/src/routes/(app)/[username]/+page.svelte b/src/routes/(app)/[username]/+page.svelte new file mode 100644 index 00000000..810fb567 --- /dev/null +++ b/src/routes/(app)/[username]/+page.svelte @@ -0,0 +1,85 @@ + + +
+
+

{subject.username}

+ +

+ {subject.address && subject.address !== 'null' ? subject.address : ''} +

+ +
+ + + + + +
+
+ +
+
copy(lightningAddress)} + id="qr" + class="cursor-pointer w-[292px] md:w-[342px] h-[342px] border border-lightgrey rounded-3xl flex p-5 justify-center items-center relative mx-auto" + /> + +
+ {lightningAddress} + +
+

+ This is a lightning address +

+
+
diff --git a/src/routes/(app)/[username]/bitcoin/+page.server.js b/src/routes/(app)/[username]/bitcoin/+page.server.js new file mode 100644 index 00000000..7ef65346 --- /dev/null +++ b/src/routes/(app)/[username]/bitcoin/+page.server.js @@ -0,0 +1,4 @@ +import { redirect } from '@sveltejs/kit'; +export async function load({ params }) { + throw redirect(303, `/${params.username}`); +} diff --git a/src/routes/(app)/[username]/bitcoin/+page.svelte b/src/routes/(app)/[username]/bitcoin/+page.svelte new file mode 100644 index 00000000..e69de29b diff --git a/src/routes/(app)/[username]/customers/+page.svelte b/src/routes/(app)/[username]/customers/+page.svelte new file mode 100644 index 00000000..e69de29b diff --git a/src/routes/(app)/[username]/dashboard/+page.server.js b/src/routes/(app)/[username]/dashboard/+page.server.js new file mode 100644 index 00000000..b6206324 --- /dev/null +++ b/src/routes/(app)/[username]/dashboard/+page.server.js @@ -0,0 +1 @@ +export const load = ({ parent }) => parent(); diff --git a/src/routes/(app)/[username]/dashboard/+page.svelte b/src/routes/(app)/[username]/dashboard/+page.svelte new file mode 100644 index 00000000..160887e3 --- /dev/null +++ b/src/routes/(app)/[username]/dashboard/+page.svelte @@ -0,0 +1,76 @@ + + +
+
+ {$selectedRate ? f(accountBalanceFiat, user.currency) : $t('user.dashboard.fetchingRate')} +
+ +
+ {accountBalanceSats} SAT +
+ + +
diff --git a/src/routes/(app)/[username]/receive/+page.server.js b/src/routes/(app)/[username]/receive/+page.server.js new file mode 100644 index 00000000..1068f273 --- /dev/null +++ b/src/routes/(app)/[username]/receive/+page.server.js @@ -0,0 +1,5 @@ +import invoice from '$lib/invoice'; + +export const actions = { + default: invoice +}; diff --git a/src/routes/(app)/[username]/receive/+page.svelte b/src/routes/(app)/[username]/receive/+page.svelte new file mode 100644 index 00000000..11d3a6db --- /dev/null +++ b/src/routes/(app)/[username]/receive/+page.svelte @@ -0,0 +1,30 @@ + + +
+ + + + + +
+ + +
+
diff --git a/src/routes/(app)/[username]/receive/[network]/[amount]/+page.server.js b/src/routes/(app)/[username]/receive/[network]/[amount]/+page.server.js new file mode 100644 index 00000000..e69de29b diff --git a/src/routes/(app)/[username]/receive/[network]/[amount]/+page.svelte b/src/routes/(app)/[username]/receive/[network]/[amount]/+page.svelte new file mode 100644 index 00000000..45b983be --- /dev/null +++ b/src/routes/(app)/[username]/receive/[network]/[amount]/+page.svelte @@ -0,0 +1 @@ +hi diff --git a/src/routes/(app)/[username]/settings/+page.server.js b/src/routes/(app)/[username]/settings/+page.server.js new file mode 100644 index 00000000..ae7e0a78 --- /dev/null +++ b/src/routes/(app)/[username]/settings/+page.server.js @@ -0,0 +1,21 @@ +import { invalid } from '@sveltejs/kit'; +import { auth, get, post } from '$lib/utils'; + +export const actions = { + default: async ({ cookies, request }) => { + let form = Object.fromEntries(await request.formData()); + + let user = { + ...(await get('/me', auth(cookies))), + ...form + }; + + try { + await post(`/user`, user, auth(cookies)); + } catch (e) { + return invalid(400, { message: e.message }); + } + + return { success: true }; + } +}; diff --git a/src/routes/(app)/[username]/settings/+page.svelte b/src/routes/(app)/[username]/settings/+page.svelte new file mode 100644 index 00000000..86705b1d --- /dev/null +++ b/src/routes/(app)/[username]/settings/+page.svelte @@ -0,0 +1,104 @@ + + +{#if loaded && user.haspin && $pin?.length !== 6} + +{/if} + +
+ + +
+

+ {$t('user.settings.header')} +

+ +
+ {#each tabs as { name, key }} + + {/each} +
+ + +
+
+ +
+
diff --git a/src/routes/(app)/[username]/settings/_account.svelte b/src/routes/(app)/[username]/settings/_account.svelte new file mode 100644 index 00000000..e49205ca --- /dev/null +++ b/src/routes/(app)/[username]/settings/_account.svelte @@ -0,0 +1,255 @@ + + +
+ + +
+ + + + +
+ + + +
+ +
+ + {#if revealPassword} + + {:else} + + {/if} + +
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ {$t('user.settings.profileImage')} + +
+ {#if profile} +
select('profile')} + on:keydown={() => select('profile')} + > + {user.username} +
+ {:else if user.profile} +
select('profile')} + on:keydown={() => select('profile')} + > + {user.username} +
+ {:else} +
select('profile')} + on:keydown={() => select('profile')} + > + +
+ {/if} +
+ + + handleFile(e, 'profile')} + /> + {#if files.profile.filename} +
{files.profile.filename}
+ {/if} +
+
+ + {#if tooLarge['profile']} +
Max file size 10MB
+ {/if} +
+ +
+
+ {$t('user.settings.bannerImage')} +
+ + + {#if banner} + select('banner')} + on:keydown={() => select('banner')} + alt="Banner" + /> + {:else if user.banner} + select('banner')} + on:keydown={() => select('banner')} + alt="Banner" + /> + {:else} +
select('banner')} + on:keydown={() => select('banner')} + alt="Banner" + /> + {/if} + + + + handleFile(e, 'banner')} + /> + {#if files.banner.filename} +
{files.banner.filename}
+ {/if} + + {#if tooLarge['banner']} +
Max file size 10MB
+ {/if} +
+ + diff --git a/src/routes/(app)/[username]/settings/_pos.svelte b/src/routes/(app)/[username]/settings/_pos.svelte new file mode 100644 index 00000000..cf4a5ece --- /dev/null +++ b/src/routes/(app)/[username]/settings/_pos.svelte @@ -0,0 +1,27 @@ + + +
+ + +
+ + diff --git a/src/routes/(app)/[username]/settings/_security.svelte b/src/routes/(app)/[username]/settings/_security.svelte new file mode 100644 index 00000000..98b9b503 --- /dev/null +++ b/src/routes/(app)/[username]/settings/_security.svelte @@ -0,0 +1,218 @@ + + +
+ + + {verifying ? 'Verify' : 'Security'} PIN +

+ {$t('user.settings.securityPINDescription')} +

+ {#if settingPin} +
+
+
+ + + + + + + + +
+
+ + + + + + + + +
+
+
+ {:else} + + {/if} +
+ + + +
+ {$t('user.settings.twofa')} +

+ {$t('user.settings.twofaDescription')} +

+ {#if setting2fa} + + + + +
+ {$t('user.settings.accountId')}
+ {user.otpsecret} +
+ +
+ {$t('user.settings.oneTimeCode')}
+ + + + + + + + +
+ {:else if disabling2fa} +
+ {$t('user.settings.oneTimeCode')}
+ + + + + + + + +
+ {:else if user.twofa} + + {:else} + + {/if} +
diff --git a/src/routes/(app)/[username]/support/+page.server.js b/src/routes/(app)/[username]/support/+page.server.js new file mode 100644 index 00000000..a335ec96 --- /dev/null +++ b/src/routes/(app)/[username]/support/+page.server.js @@ -0,0 +1,13 @@ +export const actions = { + default: async ({ cookies, request }) => { + let form = Object.fromEntries(await request.formData()); + + try { + await post('/email', form); + } catch (e) { + return invalid(400, { failed: true }); + } + + return { success: true }; + } +}; diff --git a/src/routes/(app)/[username]/support/+page.svelte b/src/routes/(app)/[username]/support/+page.svelte new file mode 100644 index 00000000..cd1cc69f --- /dev/null +++ b/src/routes/(app)/[username]/support/+page.svelte @@ -0,0 +1,76 @@ + + +
+ {#if form?.success} +

Thank you!

+

Someone will be in touch shortly.

+ + + + + {:else} +

+ {$t('user.support.header')} +

+
+
+ + +
+ +
+ + +
+ +
+ +