aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/(app)/invoice
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)/invoice
parent6422ef30f14e1baf5d1995de69c777efcad77e32 (diff)
downloadcoinos-ui-a9b44cbae79e9c01cff07964a45e1c7efa7fb241.tar.gz
coinos-ui-a9b44cbae79e9c01cff07964a45e1c7efa7fb241.zip
cached rates
Diffstat (limited to 'src/routes/(app)/invoice')
-rw-r--r--src/routes/(app)/invoice/+page.server.ts4
-rw-r--r--src/routes/(app)/invoice/[id]/memo/+page.svelte38
-rw-r--r--src/routes/(app)/invoice/[id]/tip/+page.server.ts10
-rw-r--r--src/routes/(app)/invoice/[id]/tip/+page.svelte10
4 files changed, 16 insertions, 46 deletions
diff --git a/src/routes/(app)/invoice/+page.server.ts b/src/routes/(app)/invoice/+page.server.ts
index 8d2f3b7f..db68740d 100644
--- a/src/routes/(app)/invoice/+page.server.ts
+++ b/src/routes/(app)/invoice/+page.server.ts
@@ -1,10 +1,12 @@
+import getRates from "$lib/rates";
import type { Invoice } from "$lib/types";
import { auth, post } from "$lib/utils";
import { error, redirect } from "@sveltejs/kit";
export const load = async ({ cookies, parent }) => {
const aid = cookies.get("aid");
- let { subject, user, rates } = await parent();
+ let { subject, user } = await parent();
+ const rates = await getRates();
if (aid === user.id) redirect(307, `/${user.username}/receive`);
let invoice: Invoice = {
diff --git a/src/routes/(app)/invoice/[id]/memo/+page.svelte b/src/routes/(app)/invoice/[id]/memo/+page.svelte
index e5bc8a18..67283148 100644
--- a/src/routes/(app)/invoice/[id]/memo/+page.svelte
+++ b/src/routes/(app)/invoice/[id]/memo/+page.svelte
@@ -1,19 +1,10 @@
<script>
- import { run } from 'svelte/legacy';
+ import { run } from "svelte/legacy";
import { onMount } from "svelte";
import { browser } from "$app/environment";
import { invoice as inv, request } from "$lib/store";
- import {
- copy,
- select,
- f,
- sat,
- get,
- s,
- sats,
- } from "$lib/utils";
- import Icon from "$comp/Icon.svelte";
+ import { copy, select, f, sat, get, s, sats } from "$lib/utils";
import { t } from "$lib/translations";
import { enhance } from "$app/forms";
@@ -21,7 +12,7 @@
let submit = $state();
let { data } = $props();
- let { invoice, id, user, rates } = $state(data);
+ let { invoice, id, user } = $derived(data);
let {
amount,
hash,
@@ -34,30 +25,9 @@
text,
tip,
user: { username, currency },
- } = $state(invoice);
+ } = $derived(invoice);
invoice.memo = user?.username;
-
- let refresh = (data) => {
- $inv = null;
-
- ({ invoice, id } = data);
- ({
- amount,
- hash,
- items,
- memoPrompt,
- type,
- received,
- prompt,
- text,
- tip,
- user: { username },
- } = invoice);
- };
- run(() => {
- refresh(data);
- });
</script>
<form
diff --git a/src/routes/(app)/invoice/[id]/tip/+page.server.ts b/src/routes/(app)/invoice/[id]/tip/+page.server.ts
index a1ba8924..32eea868 100644
--- a/src/routes/(app)/invoice/[id]/tip/+page.server.ts
+++ b/src/routes/(app)/invoice/[id]/tip/+page.server.ts
@@ -1,13 +1,15 @@
-import { get } from "$lib/utils";
import invoice from "$lib/invoice";
+import getRates from "$lib/rates";
import { redirect } from "@sveltejs/kit";
export async function load({ parent }) {
- const rates = await get("/rates");
- const { invoice } = await parent();
+ const rates = await getRates();
+ const { invoice, user } = await parent();
if (!invoice.amount) redirect(307, `/invoice/${invoice.id}`);
- return { rates };
+ const rate = rates[user.currency];
+ const invoiceRate = rates[invoice.currency];
+ return { rate, invoiceRate };
}
export const actions = {
diff --git a/src/routes/(app)/invoice/[id]/tip/+page.svelte b/src/routes/(app)/invoice/[id]/tip/+page.svelte
index 1c651163..7999030e 100644
--- a/src/routes/(app)/invoice/[id]/tip/+page.svelte
+++ b/src/routes/(app)/invoice/[id]/tip/+page.svelte
@@ -63,7 +63,7 @@
let submit = $state();
let { data } = $props();
- let { invoice, id, user, rates } = $state(data);
+ let { invoice, id, user } = $state(data);
let {
aid,
amount,
@@ -83,7 +83,7 @@
let fullscreen;
let currency = user?.currency || invoice.currency;
- let rate = invoice.rate * (rates[currency] / rates[invoice.currency]);
+ let rate = invoice.rate * (data.rate / data.invoiceRate);
$effect(() => {
tip = Math.round((amount / 100) * untrack(() => tipPercent));
@@ -95,11 +95,7 @@
</script>
<div class="container px-4 max-w-lg text-center mx-auto">
- <form
- method="POST"
- use:enhance
- class="space-y-5"
- >
+ <form method="POST" use:enhance class="space-y-5">
<input type="hidden" name="aid" value={aid} />
<input type="hidden" name="amount" value={amount} />
<input type="hidden" name="tip" value={tip} />