From ccc13974d22a47995b5f9f674891a39d54aa0620 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 9 Nov 2022 09:53:33 -0800 Subject: refactor settings --- src/components/Pin.svelte | 3 +- src/lib/socket.js | 7 +- src/routes/(app)/[username]/+page.svelte | 6 + .../(app)/[username]/settings/+page.server.js | 20 -- src/routes/(app)/[username]/settings/+page.svelte | 104 --------- .../[username]/settings/[...tab]/+page.server.js | 26 +++ .../[username]/settings/[...tab]/+page.svelte | 109 +++++++++ .../[username]/settings/[...tab]/_account.svelte | 255 +++++++++++++++++++++ .../(app)/[username]/settings/[...tab]/_pos.svelte | 18 ++ .../[username]/settings/[...tab]/_security.svelte | 224 ++++++++++++++++++ .../(app)/[username]/settings/_account.svelte | 255 --------------------- src/routes/(app)/[username]/settings/_pos.svelte | 18 -- .../(app)/[username]/settings/_security.svelte | 223 ------------------ src/routes/(app)/invoice/[id]/+layout.server.js | 10 +- src/routes/(app)/invoice/[id]/+page.svelte | 21 +- src/routes/(app)/invoice/[id]/paid/+page.svelte | 68 +++--- src/routes/(app)/invoice/[id]/pending/+page.svelte | 56 ----- 17 files changed, 701 insertions(+), 722 deletions(-) delete mode 100644 src/routes/(app)/[username]/settings/+page.server.js delete mode 100644 src/routes/(app)/[username]/settings/+page.svelte create mode 100644 src/routes/(app)/[username]/settings/[...tab]/+page.server.js create mode 100644 src/routes/(app)/[username]/settings/[...tab]/+page.svelte create mode 100644 src/routes/(app)/[username]/settings/[...tab]/_account.svelte create mode 100644 src/routes/(app)/[username]/settings/[...tab]/_pos.svelte create mode 100644 src/routes/(app)/[username]/settings/[...tab]/_security.svelte delete mode 100644 src/routes/(app)/[username]/settings/_account.svelte delete mode 100644 src/routes/(app)/[username]/settings/_pos.svelte delete mode 100644 src/routes/(app)/[username]/settings/_security.svelte delete mode 100644 src/routes/(app)/invoice/[id]/pending/+page.svelte (limited to 'src') diff --git a/src/components/Pin.svelte b/src/components/Pin.svelte index 2a6bf977..80e003b9 100644 --- a/src/components/Pin.svelte +++ b/src/components/Pin.svelte @@ -1,5 +1,6 @@ - -{#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/[...tab]/+page.server.js b/src/routes/(app)/[username]/settings/[...tab]/+page.server.js new file mode 100644 index 00000000..a6fbd9bf --- /dev/null +++ b/src/routes/(app)/[username]/settings/[...tab]/+page.server.js @@ -0,0 +1,26 @@ +import { invalid, redirect } from '@sveltejs/kit'; +import { auth, get, post } from '$lib/utils'; + +export function load({ params, url }) { + if (url.pathname.endsWith('settings')) throw redirect(307, url.pathname + '/account'); + return params; +} + +export const actions = { + default: async ({ cookies, locals, request }) => { + let form = Object.fromEntries(await request.formData()); + + let user = { + ...locals.user, + ...form + }; + + try { + await post(`/user`, user, auth(cookies)); + } catch (e) { + return invalid(400, { message: e.message }); + } + + return { user, success: true }; + } +}; diff --git a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte new file mode 100644 index 00000000..20e1fd8f --- /dev/null +++ b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte @@ -0,0 +1,109 @@ + + +{#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/[...tab]/_account.svelte b/src/routes/(app)/[username]/settings/[...tab]/_account.svelte new file mode 100644 index 00000000..5d5f731f --- /dev/null +++ b/src/routes/(app)/[username]/settings/[...tab]/_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/[...tab]/_pos.svelte b/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte new file mode 100644 index 00000000..ccbeeff4 --- /dev/null +++ b/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte @@ -0,0 +1,18 @@ + + +
+ + +
diff --git a/src/routes/(app)/[username]/settings/[...tab]/_security.svelte b/src/routes/(app)/[username]/settings/[...tab]/_security.svelte new file mode 100644 index 00000000..0f45966d --- /dev/null +++ b/src/routes/(app)/[username]/settings/[...tab]/_security.svelte @@ -0,0 +1,224 @@ + + +
+ + + {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')}
+ {otp.secret} +
+ +
+ {$t('user.settings.oneTimeCode')}
+ + + + + + + + +
+ {:else if disabling2fa} +
+ {$t('user.settings.oneTimeCode')}
+ + + + + + + + +
+ {:else if user.twofa} + + {:else} + + {/if} +
diff --git a/src/routes/(app)/[username]/settings/_account.svelte b/src/routes/(app)/[username]/settings/_account.svelte deleted file mode 100644 index e49205ca..00000000 --- a/src/routes/(app)/[username]/settings/_account.svelte +++ /dev/null @@ -1,255 +0,0 @@ - - -
- - -
- - - - -
- - - -
- -
- - {#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 deleted file mode 100644 index ccbeeff4..00000000 --- a/src/routes/(app)/[username]/settings/_pos.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - -
- - -
diff --git a/src/routes/(app)/[username]/settings/_security.svelte b/src/routes/(app)/[username]/settings/_security.svelte deleted file mode 100644 index 4bdb00d4..00000000 --- a/src/routes/(app)/[username]/settings/_security.svelte +++ /dev/null @@ -1,223 +0,0 @@ - - -
- - - {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')}
- {otp.secret} -
- -
- {$t('user.settings.oneTimeCode')}
- - - - - - - - -
- {:else if disabling2fa} -
- {$t('user.settings.oneTimeCode')}
- - - - - - - - -
- {:else if user.twofa} - - {:else} - - {/if} -
diff --git a/src/routes/(app)/invoice/[id]/+layout.server.js b/src/routes/(app)/invoice/[id]/+layout.server.js index 4b6cf97e..dacc44e6 100644 --- a/src/routes/(app)/invoice/[id]/+layout.server.js +++ b/src/routes/(app)/invoice/[id]/+layout.server.js @@ -1,9 +1,17 @@ import Qr from 'qrcode-base64'; import { get } from '$lib/utils'; +import { redirect } from '@sveltejs/kit'; + +export async function load({ depends, params, url }) { + depends('app:invoice'); -export async function load({ params }) { let { id } = params; let invoice = await get(`/invoice?uuid=${id}`); + let { amount, received, pending } = invoice; + + let paid = (!amount && (received || pending)) || (amount > 0 && received + pending >= amount); + if (paid && !url.pathname.endsWith('paid')) throw redirect(307, `/invoice/${id}/paid`); + let sm = Qr.drawImg(invoice.text, { size: 300 }); let lg = Qr.drawImg(invoice.text, { size: 1200 }); diff --git a/src/routes/(app)/invoice/[id]/+page.svelte b/src/routes/(app)/invoice/[id]/+page.svelte index dec33b62..fadf7270 100644 --- a/src/routes/(app)/invoice/[id]/+page.svelte +++ b/src/routes/(app)/invoice/[id]/+page.svelte @@ -1,7 +1,7 @@
-

{$t('invoice.paymentSuccessful')}

-

- {f(amountFiat, currency)} - {#if tip} - + {f(tipFiat, currency)} - {/if} -

-

- {sat(amount)} - {#if tip} - +{sat(tip)} - {/if} -

- + {#if received} +

{$t('invoice.paymentSuccessful')}

+

+ {f(amountFiat, currency)} + {#if tip} + + {f(tipFiat, currency)} + {/if} +

+

+ {sat(received)} + {#if tip} + +{sat(tip)} + {/if} +

+ {/if} + + {#if pending} +

Payment detected

+

+ {f(pendingFiat, currency)} + {#if tip} + + {f(tipFiat, currency)} + {/if} +

+

+ {sat(pending)} + {#if tip} + +{sat(tip)} + {/if} +

+ {/if} + + + +
diff --git a/src/routes/(app)/invoice/[id]/pending/+page.svelte b/src/routes/(app)/invoice/[id]/pending/+page.svelte deleted file mode 100644 index d3970dab..00000000 --- a/src/routes/(app)/invoice/[id]/pending/+page.svelte +++ /dev/null @@ -1,56 +0,0 @@ - - -
-
- -
- -

Payment detected

- -
-

- {f(pendingFiat, currency)} - {#if tip} - + {f(tipFiat, currency)} - {/if} -

-

- {sat(pending)} - {#if tip} - +{sat(tip)} - {/if} -

-
- -

Pending confirmation

- - -
-- cgit v1.2.3