From e65a8cfbf13a1ddf1a9aa7bde5438fc2f4b70b51 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Mon, 1 Aug 2022 13:27:45 -0700 Subject: check username exists --- src/lib/utils.js | 8 +++++++- src/routes/[username]/index.js | 13 ++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/lib/utils.js b/src/lib/utils.js index 7831c519..38f2a010 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -9,7 +9,13 @@ const base = browser ? '' : import.meta.env.VITE_COINOS_URL; export const get = (url) => fetch(base + url, { headers: { accept: 'application/json' } - }).then((r) => r.json()); + }).then((r) => r.text()).then((body) => { + try { + return JSON.parse(body); + } catch(e) { + throw Error(body); + } + }) export const post = (url, body) => fetch(base + url, { diff --git a/src/routes/[username]/index.js b/src/routes/[username]/index.js index 01613574..5229cc50 100644 --- a/src/routes/[username]/index.js +++ b/src/routes/[username]/index.js @@ -1,3 +1,14 @@ +import { get } from '$lib/utils'; + export async function GET({ params }) { - return { body: params }; + let { username } = params; + let body; + + try { + body = await get(`/users/${username}`); + } catch(e) { + body = {}; + } + + return { body }; } -- cgit v1.2.3 From 5428fdf82a4260fa4f5e0bcdb722d6716740d8bf Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Mon, 1 Aug 2022 20:50:16 -0700 Subject: update invoice when tip changes --- src/lib/utils.js | 25 +++- src/routes/invoice/[id].js | 9 +- src/routes/invoice/[id].svelte | 282 ++++++++++++++++++++++------------------- src/routes/invoice/index.js | 4 +- 4 files changed, 173 insertions(+), 147 deletions(-) (limited to 'src') diff --git a/src/lib/utils.js b/src/lib/utils.js index 38f2a010..b80a548b 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -9,13 +9,15 @@ const base = browser ? '' : import.meta.env.VITE_COINOS_URL; export const get = (url) => fetch(base + url, { headers: { accept: 'application/json' } - }).then((r) => r.text()).then((body) => { - try { - return JSON.parse(body); - } catch(e) { - throw Error(body); - } - }) + }) + .then((r) => r.text()) + .then((body) => { + try { + return JSON.parse(body); + } catch (e) { + throw Error(body); + } + }); export const post = (url, body) => fetch(base + url, { @@ -27,3 +29,12 @@ export const post = (url, body) => export const copy = (text) => { navigator.clipboard.writeText(text); }; + +export function reverseFormat(val, locale) { + let parts = new Intl.NumberFormat(locale).formatToParts(1111.1); + let group = parts.find((part) => part.type === 'group').value; + let decimal = parts.find((part) => part.type === 'decimal').value; + let reversedVal = val.replace(new RegExp('\\' + group, 'g'), ''); + reversedVal = reversedVal.replace(new RegExp('\\' + decimal, 'g'), '.'); + return Number.isNaN(reversedVal) ? 0 : +reversedVal; +} diff --git a/src/routes/invoice/[id].js b/src/routes/invoice/[id].js index 9a38604f..514e5d69 100644 --- a/src/routes/invoice/[id].js +++ b/src/routes/invoice/[id].js @@ -1,12 +1,9 @@ import { get } from '$lib/utils'; -const username = 'bob', - network = 'lightning'; - export async function GET({ params }) { let { id } = params; - let huh = await get(`/invoice?uuid=${id}`); - let { amount, rate, text } = await get(`/invoice?uuid=${id}`); + let res = await get(`/invoice?uuid=${id}`); + let { amount, rate, text, user: { username }} = await get(`/invoice?uuid=${id}`); - return { body: { amount, rate, text } }; + return { body: { amount, rate, username, text } }; } diff --git a/src/routes/invoice/[id].svelte b/src/routes/invoice/[id].svelte index 1f1a7aa3..0f5a1437 100644 --- a/src/routes/invoice/[id].svelte +++ b/src/routes/invoice/[id].svelte @@ -1,11 +1,16 @@ -{#if $user} -
+
+ {#if $user} + {/if} -
+
+
+
- -
-

Add a tip?

+

Add a tip?

+ +
+ {tipAmountFormatted}{`(${tipAmountSats} SATS)`} + {tipPercent}% +
+ + { + customTipAmount = ''; + tipPercent = e.target.value; + }} + /> -
- {tipAmountFormatted}{`(${tipAmountSats} SATS)`} + {#each tipAmounts as amount} + - {tipPercent}% -
+ {/each} - { - customTipAmount = ''; - tipPercent = e.target.value; - }} - /> - -
- {#each tipAmounts as amount} - - {/each} - -
- $ - handleCustomTipAmount(e)} - class="bg-primary rounded-2xl py-3 px-10 font-semibold mt-2 mr-1 w-full md:w-auto" - placeholder="Other" - /> - -
+ : 'opacity-100' + : !customTipAmount + ? 'opacity-50' + : 'opacity-100'}" + disabled={showMobileTip ? !customTipAmount && !tipAmount : !customTipAmount} + on:click={() => (showMobileTip = false)}>Done
+
+ +