aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/(app)/send
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-12-05 19:20:36 -0800
committerAdam Soltys <[email protected]>2024-12-05 19:20:36 -0800
commita9b44cbae79e9c01cff07964a45e1c7efa7fb241 (patch)
tree5caa996fc2eca705fb793e79d63bfbf5f9f93e48 /src/routes/(app)/send
parent6422ef30f14e1baf5d1995de69c777efcad77e32 (diff)
downloadcoinos-ui-a9b44cbae79e9c01cff07964a45e1c7efa7fb241.tar.gz
coinos-ui-a9b44cbae79e9c01cff07964a45e1c7efa7fb241.zip
cached rates
Diffstat (limited to 'src/routes/(app)/send')
-rw-r--r--src/routes/(app)/send/bitcoin/[address]/+page.server.ts7
-rw-r--r--src/routes/(app)/send/bitcoin/[address]/+page.svelte4
-rw-r--r--src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts10
-rw-r--r--src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte19
-rw-r--r--src/routes/(app)/send/ecash/+page.server.ts7
-rw-r--r--src/routes/(app)/send/ecash/+page.svelte20
-rw-r--r--src/routes/(app)/send/ecash/[request]/+page.svelte4
-rw-r--r--src/routes/(app)/send/invoice/[id]/+page.server.ts14
-rw-r--r--src/routes/(app)/send/invoice/[id]/+page.svelte6
-rw-r--r--src/routes/(app)/send/lightning/[payreq]/+page.server.ts6
-rw-r--r--src/routes/(app)/send/lightning/[payreq]/+page.svelte3
11 files changed, 57 insertions, 43 deletions
diff --git a/src/routes/(app)/send/bitcoin/[address]/+page.server.ts b/src/routes/(app)/send/bitcoin/[address]/+page.server.ts
index f27d3fab..00429c1e 100644
--- a/src/routes/(app)/send/bitcoin/[address]/+page.server.ts
+++ b/src/routes/(app)/send/bitcoin/[address]/+page.server.ts
@@ -1,7 +1,10 @@
+import getRates from "$lib/rates";
import { auth, get } from "$lib/utils";
-export async function load({ cookies }) {
+export async function load({ cookies, parent }) {
+ const { user } = await parent();
+ const rates = await getRates();
const aid = cookies.get("aid");
const { balance } = await get(`/account/${aid}`, auth(cookies));
- return { balance };
+ return { balance, rate: rates[user.currency] };
}
diff --git a/src/routes/(app)/send/bitcoin/[address]/+page.svelte b/src/routes/(app)/send/bitcoin/[address]/+page.svelte
index c271543c..09caaa85 100644
--- a/src/routes/(app)/send/bitcoin/[address]/+page.svelte
+++ b/src/routes/(app)/send/bitcoin/[address]/+page.svelte
@@ -10,14 +10,14 @@
let { data } = $props();
- let { balance, rates, user } = data;
+ let { balance, user } = data;
let { address } = $page.params;
let { currency, username } = user;
let amount = $state(0);
let submit = $state(), fiat = $state();
- let update = () => ($rate = data.rates[currency]);
+ let update = () => ($rate = data.rate);
let setMax = () => {
fiat = false;
diff --git a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts
index 9156bf7b..ee38cbd3 100644
--- a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts
+++ b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts
@@ -1,8 +1,15 @@
+import getRates from "$lib/rates";
import { auth, fd, get, post } from "$lib/utils";
import { fail, redirect } from "@sveltejs/kit";
-export async function load({ params: { address, amount, feeRate }, cookies }) {
+export async function load({
+ params: { address, amount, feeRate },
+ cookies,
+ parent,
+}) {
const aid = cookies.get("aid");
+ const rates = await getRates();
+ const { user } = await parent();
try {
const { fee, fees, inputs, ourfee, hex } = await post(
@@ -20,6 +27,7 @@ export async function load({ params: { address, amount, feeRate }, cookies }) {
fee,
fees,
feeRate,
+ rate: rates[user.currency],
ourfee,
hex,
inputs,
diff --git a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte
index 298280df..7d9b8f64 100644
--- a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte
+++ b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte
@@ -71,18 +71,8 @@
let toggle = () => (submitting = !submitting);
- let {
- account,
- amount,
- address,
- message,
- fee,
- fees,
- ourfee,
- rates,
- hex,
- inputs,
- } = $derived(data);
+ let { account, amount, address, message, fee, fees, ourfee, hex, inputs } =
+ $derived(data);
let { feeRate } = $state(data);
@@ -91,7 +81,10 @@
feeRate = feeRate
? closest(Object.values(fees), feeRate)
: fees.halfHourFee;
- if (!$rate) $rate = rates[currency];
+ });
+
+ $effect(() => {
+ if (!$rate) $rate = data.rate;
});
let { balance, currency } = data.user;
diff --git a/src/routes/(app)/send/ecash/+page.server.ts b/src/routes/(app)/send/ecash/+page.server.ts
index d65c0046..b290fb95 100644
--- a/src/routes/(app)/send/ecash/+page.server.ts
+++ b/src/routes/(app)/send/ecash/+page.server.ts
@@ -1,6 +1,13 @@
+import getRates from "$lib/rates";
import { auth, fd, post } from "$lib/utils";
import { error, redirect } from "@sveltejs/kit";
+export async function load({ parent }) {
+ const rates = await getRates();
+ const { user } = await parent();
+ return { rate: rates[user.currency] };
+}
+
export const actions = {
default: async ({ cookies, request }) => {
let id;
diff --git a/src/routes/(app)/send/ecash/+page.svelte b/src/routes/(app)/send/ecash/+page.svelte
index 5de8bee1..96ab5b02 100644
--- a/src/routes/(app)/send/ecash/+page.svelte
+++ b/src/routes/(app)/send/ecash/+page.svelte
@@ -1,6 +1,4 @@
<script>
- import { run, preventDefault } from 'svelte/legacy';
-
import { enhance, applyAction } from "$app/forms";
import { t } from "$lib/translations";
import Icon from "$comp/Icon.svelte";
@@ -13,24 +11,22 @@
let { data } = $props();
- let { rates, user } = data;
- let { balance, currency, username } = user;
+ let { user } = $derived(data);
+ let { balance, currency, username } = $derived(user);
let amount = $state(0);
- let submit = $state(), fiat = $state();
-
- let update = () => ($rate = data.rates[currency]);
+ let submit = $state(),
+ fiat = $state();
- let setMax = () => {
+ let setMax = (e) => {
+ e.preventDefault();
fiat = false;
amount = balance;
};
let submitting = $state();
let toggle = () => (submitting = !submitting);
- run(() => {
- update(data);
- });
+ $effect(() => ({ rate: $rate } = user));
</script>
<div class="container px-4 max-w-xl mx-auto space-y-5 text-center">
@@ -45,7 +41,7 @@
<button
type="button"
class="btn !w-auto grow"
- onclick={preventDefault(setMax)}
+ onclick={setMax}
disabled={submitting}
onkeydown={setMax}>Max ⚡️{s(balance)}</button
>
diff --git a/src/routes/(app)/send/ecash/[request]/+page.svelte b/src/routes/(app)/send/ecash/[request]/+page.svelte
index 1f950de0..3f75eee4 100644
--- a/src/routes/(app)/send/ecash/[request]/+page.svelte
+++ b/src/routes/(app)/send/ecash/[request]/+page.svelte
@@ -63,7 +63,7 @@
submitting = false;
};
- let { rates, recipient, req, user, type, target } = $derived({
+ let { recipient, req, user, type, target } = $derived({
...data,
...form,
});
@@ -73,7 +73,7 @@
let toggle = () => (show = !show);
let amount = $derived(form?.amount || data.req.amount);
- $effect(() => ($rate ||= rates[currency]));
+ $effect(() => ($rate ||= data.rate);
$effect(() => form && (submitting = false));
</script>
diff --git a/src/routes/(app)/send/invoice/[id]/+page.server.ts b/src/routes/(app)/send/invoice/[id]/+page.server.ts
index 2798a234..4047ed3d 100644
--- a/src/routes/(app)/send/invoice/[id]/+page.server.ts
+++ b/src/routes/(app)/send/invoice/[id]/+page.server.ts
@@ -1,9 +1,10 @@
+import getRates from "$lib/rates";
import { auth, fd, get, post, types } from "$lib/utils";
import { error, redirect } from "@sveltejs/kit";
export async function load({ cookies, params: { id }, parent }) {
const aid = cookies.get("aid");
- const { rates, user } = await parent();
+ const { user } = await parent();
const invoice = await get(`/invoice/${id}`);
@@ -20,7 +21,11 @@ export async function load({ cookies, params: { id }, parent }) {
if (!user) redirect(307, `/invoice/${id}`);
- return { invoice, rates, user };
+ const rates = await getRates();
+ const rate = rates[user.currency];
+ const invoiceRate = rates[invoice.currency];
+
+ return { invoice, user, rate, invoiceRate };
}
export const actions = {
@@ -31,9 +36,10 @@ export const actions = {
body.hash = id;
p = await post("/payments", body, auth(cookies));
- } catch (e: any) {
+ } catch (e) {
+ const { message } = e as Error;
console.log("payment failed", id, e);
- error(500, e.message);
+ error(500, message);
}
redirect(307, `/sent/${p.id}`);
diff --git a/src/routes/(app)/send/invoice/[id]/+page.svelte b/src/routes/(app)/send/invoice/[id]/+page.svelte
index 1267d71b..d3603d64 100644
--- a/src/routes/(app)/send/invoice/[id]/+page.svelte
+++ b/src/routes/(app)/send/invoice/[id]/+page.svelte
@@ -15,14 +15,12 @@
import { btc, sat, post, back, f, toFiat, s, sats, focus } from "$lib/utils";
let { data, form } = $props();
- let { invoice, rates, user } = $state(data);
+ let { invoice, user } = $state(data);
let { address, hash, payreq, user: recipient, tip } = $state(invoice);
let { currency } = $state(user);
let { amount } = $state(form || invoice);
- let rate = $derived(
- invoice.rate * (rates[user.currency] / rates[invoice.currency]),
- );
+ let rate = $derived(invoice.rate * (data.rate / data.invoiceRate));
let a = $state(),
af = $state(),
diff --git a/src/routes/(app)/send/lightning/[payreq]/+page.server.ts b/src/routes/(app)/send/lightning/[payreq]/+page.server.ts
index 1fb032bb..d340dbe3 100644
--- a/src/routes/(app)/send/lightning/[payreq]/+page.server.ts
+++ b/src/routes/(app)/send/lightning/[payreq]/+page.server.ts
@@ -1,9 +1,13 @@
+import getRates from "$lib/rates";
import { auth, fd, post } from "$lib/utils";
import { fail, redirect } from "@sveltejs/kit";
-export async function load({ cookies, params }) {
+export async function load({ cookies, params, parent }) {
+ const { user } = await parent();
if (params.payreq.startsWith("lno")) return params;
+ const rates = await getRates();
const data = await post("/parse", params, auth(cookies));
+ data.rate = rates[user.currency];
data.payreq = params.payreq;
return data;
}
diff --git a/src/routes/(app)/send/lightning/[payreq]/+page.svelte b/src/routes/(app)/send/lightning/[payreq]/+page.svelte
index 589194ea..d1e8776f 100644
--- a/src/routes/(app)/send/lightning/[payreq]/+page.svelte
+++ b/src/routes/(app)/send/lightning/[payreq]/+page.svelte
@@ -15,12 +15,11 @@
alias,
payreq,
ourfee,
- rates,
user: { currency },
} = $derived({ ...data, ...form });
let a = $state();
- $effect(() => ($rate ||= rates[currency]));
+ $effect(() => ($rate ||= data.rate);
$effect(() => form && (loading = false));
let showMax = $state();