diff options
| author | Adam Soltys <[email protected]> | 2024-12-05 19:20:36 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-12-05 19:20:36 -0800 |
| commit | a9b44cbae79e9c01cff07964a45e1c7efa7fb241 (patch) | |
| tree | 5caa996fc2eca705fb793e79d63bfbf5f9f93e48 /src/routes/(app)/send | |
| parent | 6422ef30f14e1baf5d1995de69c777efcad77e32 (diff) | |
| download | coinos-ui-a9b44cbae79e9c01cff07964a45e1c7efa7fb241.tar.gz coinos-ui-a9b44cbae79e9c01cff07964a45e1c7efa7fb241.zip | |
cached rates
Diffstat (limited to 'src/routes/(app)/send')
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(); |
