aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-11-08 23:34:59 -0800
committerAdam Soltys <[email protected]>2024-11-08 23:34:59 -0800
commit330e1dd77ab59084a831508e1dab103fd601dc49 (patch)
tree300ea5030185ec76a47b69e34744bc67c4b259b7 /src
parentc37ec8a0ad4fc1342de7277e789cbf1a506ea4cf (diff)
downloadcoinos-ui-330e1dd77ab59084a831508e1dab103fd601dc49.tar.gz
coinos-ui-330e1dd77ab59084a831508e1dab103fd601dc49.zip
clean up internal send dialog
Diffstat (limited to 'src')
-rw-r--r--src/routes/(app)/invoice/[id]/tip/+page.svelte1
-rw-r--r--src/routes/(app)/pay/[username]/[...amount]/+page.server.ts30
-rw-r--r--src/routes/(app)/pay/[username]/[...amount]/+page.svelte92
3 files changed, 31 insertions, 92 deletions
diff --git a/src/routes/(app)/invoice/[id]/tip/+page.svelte b/src/routes/(app)/invoice/[id]/tip/+page.svelte
index 29516c61..4431b17d 100644
--- a/src/routes/(app)/invoice/[id]/tip/+page.svelte
+++ b/src/routes/(app)/invoice/[id]/tip/+page.svelte
@@ -98,7 +98,6 @@
<form
method="POST"
use:enhance
- class:invisible={submitting}
class="space-y-5"
>
<input type="hidden" name="aid" value={aid} />
diff --git a/src/routes/(app)/pay/[username]/[...amount]/+page.server.ts b/src/routes/(app)/pay/[username]/[...amount]/+page.server.ts
index 4dc077ca..7b439dcd 100644
--- a/src/routes/(app)/pay/[username]/[...amount]/+page.server.ts
+++ b/src/routes/(app)/pay/[username]/[...amount]/+page.server.ts
@@ -10,11 +10,10 @@ export async function load({ cookies, params, parent }) {
let [amount, currency] = params.amount.split("/");
- let rate;
+ const rate = rates[currency ? currency.toUpperCase() : subject.currency];
+ if (!rate) error(500, "Invalid currency symbol");
if (amount) {
- rate = rates[currency ? currency.toUpperCase() : subject.currency];
- if (!rate) error(500, "Invalid currency symbol");
if (currency) amount = (amount * sats) / rate;
const { id } = await post(
@@ -40,15 +39,30 @@ export async function load({ cookies, params, parent }) {
export const actions = {
default: async ({ cookies, request }) => {
- let p;
+ let id;
try {
const body = await fd(request);
- p = await post("/payments", body, auth(cookies));
- } catch (e: any) {
+ const { amount, rate, prompt, type, username } = body;
+
+ ({ id } = await post(
+ "/invoice",
+ {
+ invoice: {
+ amount,
+ rate,
+ prompt,
+ type,
+ },
+ user: { username },
+ },
+ auth(cookies),
+ ));
+ } catch (e) {
console.log(e);
- return fail(400, { message: e.message });
+ const { message } = e as Error;
+ return fail(400, { message });
}
- redirect(307, `/sent/${p.id}`);
+ redirect(307, `/invoice/${id}`);
},
};
diff --git a/src/routes/(app)/pay/[username]/[...amount]/+page.svelte b/src/routes/(app)/pay/[username]/[...amount]/+page.svelte
index 4fbd0b64..478d2529 100644
--- a/src/routes/(app)/pay/[username]/[...amount]/+page.svelte
+++ b/src/routes/(app)/pay/[username]/[...amount]/+page.svelte
@@ -3,12 +3,8 @@
import { t } from "$lib/translations";
import { goto } from "$app/navigation";
- import { pin } from "$lib/store";
import { enhance } from "$app/forms";
- import Avatar from "$comp/Avatar.svelte";
- import Icon from "$comp/Icon.svelte";
import Numpad from "$comp/Numpad.svelte";
- import Spinner from "$comp/Spinner.svelte";
import { page } from "$app/stores";
import { f, fail, post, s, sat, sats } from "$lib/utils";
@@ -18,50 +14,9 @@
let currency = subject?.currency || "USD";
let next = $state();
- let amount = $state(form?.amount || data.amount);
- let a = $state(),
- af = $state(0),
- fiat = $state(!amount),
- hash = $state(),
- amountFiat = 0;
-
- let setAmount = async () => {
- amount = a;
- amountFiat = parseFloat(af).toFixed(2);
- rate = fiat ? (sats * amountFiat) / amount : r;
-
- let id;
- try {
- ({ id, hash } = await post(`/invoice`, {
- invoice: {
- amount,
- rate: rates[subject.currency],
- prompt: subject.prompt,
- type: "lightning",
- },
- user: subject,
- }));
- } catch (e) {
- fail(e.message);
- }
-
- goto(`/send/invoice/${id}`);
- };
-
- let loading = $state();
- let submit = () => (loading = true);
-
- let update = () => {
- if (form?.message?.includes("pin")) $pin = undefined;
- loading = false;
- };
- let r;
- run(() => {
- r = rate || rates[subject?.currency];
- });
- run(() => {
- update(form);
- });
+ let initialAmount = form?.amount || data.amount;
+ let amount = $state(initialAmount);
+ let fiat = $state(!initialAmount);
</script>
{#if form?.message}
@@ -71,44 +26,15 @@
{/if}
<div class="container px-4 mt-20 max-w-xl mx-auto space-y-2">
- <Numpad
- bind:amount={a}
- bind:amountFiat={af}
- {currency}
- bind:fiat
- bind:rate={r}
- submit={next}
- />
+ <Numpad bind:amount bind:fiat {currency} {rate} submit={next} />
- <form method="POST" use:enhance onsubmit={submit}>
+ <form method="POST" use:enhance>
<input name="amount" value={amount} type="hidden" />
+ <input name="rate" value={rate} type="hidden" />
<input name="username" value={subject.username} type="hidden" />
- <input name="pin" value={$pin} type="hidden" />
- <input name="hash" value={hash} type="hidden" />
- <div class="flex w-full text-xl">
- {#if amount}
- <button
- type="submit"
- class="opacity-100 hover:opacity-80'} rounded-2xl border py-5 font-bold mx-auto mt-2 bg-black text-white px-6 w-40"
- >
- {#if loading}
- <Spinner />
- {:else}
- {$t("payments.send")}
- {/if}
- </button>
- {:else}
- <button
- type="button"
- bind:this={next}
- class="btn btn-accent"
- onclick={setAmount}
- onkeydown={setAmount}
- >
- {$t("payments.next")}</button
- >
- {/if}
- </div>
+ <button type="submit" bind:this={next} class="btn btn-accent">
+ {$t("payments.next")}</button
+ >
</form>
</div>