From 7064846be383ae352329377f21304d0cfdc5040c Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 20 Aug 2024 09:50:42 -0700 Subject: use id's for cash links --- .../(app)/[username]/ecash/[...token]/+page.svelte | 13 ++-- src/routes/(app)/ecash/[id]/+page.server.js | 9 +++ src/routes/(app)/ecash/[id]/+page.svelte | 79 ++++++++++++++++++++++ src/routes/(app)/register/+page.server.js | 2 + src/routes/(app)/send/ecash/+page.server.js | 11 +-- .../(app)/voucher/[...token]/+page.server.js | 14 ++-- src/routes/(app)/voucher/[...token]/+page.svelte | 3 +- 7 files changed, 111 insertions(+), 20 deletions(-) create mode 100644 src/routes/(app)/ecash/[id]/+page.server.js create mode 100644 src/routes/(app)/ecash/[id]/+page.svelte (limited to 'src/routes/(app)') diff --git a/src/routes/(app)/[username]/ecash/[...token]/+page.svelte b/src/routes/(app)/[username]/ecash/[...token]/+page.svelte index e920c6d2..21fa979b 100644 --- a/src/routes/(app)/[username]/ecash/[...token]/+page.svelte +++ b/src/routes/(app)/[username]/ecash/[...token]/+page.svelte @@ -51,12 +51,11 @@ - - + diff --git a/src/routes/(app)/ecash/[id]/+page.server.js b/src/routes/(app)/ecash/[id]/+page.server.js new file mode 100644 index 00000000..c5f24e82 --- /dev/null +++ b/src/routes/(app)/ecash/[id]/+page.server.js @@ -0,0 +1,9 @@ +import { auth, get } from "$lib/utils"; +import { fail, redirect } from "@sveltejs/kit"; +import parse from "$lib/parse"; + +export async function load({ cookies, params, request, url }) { + let { id } = params; + let token = await get(`/cash/${id}`); + return { id, token }; +} diff --git a/src/routes/(app)/ecash/[id]/+page.svelte b/src/routes/(app)/ecash/[id]/+page.svelte new file mode 100644 index 00000000..023276ee --- /dev/null +++ b/src/routes/(app)/ecash/[id]/+page.svelte @@ -0,0 +1,79 @@ + + +
+

+ {$t("payments.ecash")} +

+ + {#if amount > 0} +
+
+ {f(amountFiat, currency)} +
+
+ ⚡️{`${s(amount)}`} +
+
+ {/if} + +
+ + + + + + + + + + + + + + + + + + +
+
diff --git a/src/routes/(app)/register/+page.server.js b/src/routes/(app)/register/+page.server.js index 806eda1f..f2288d9c 100644 --- a/src/routes/(app)/register/+page.server.js +++ b/src/routes/(app)/register/+page.server.js @@ -21,6 +21,8 @@ export const actions = { let error; if (loginRedirect === "undefined") loginRedirect = undefined; + + console.log("LOGIN REDIRECT", loginRedirect) try { await post("/register", { user }, { "cf-connecting-ip": ip }); diff --git a/src/routes/(app)/send/ecash/+page.server.js b/src/routes/(app)/send/ecash/+page.server.js index 8541a3f8..422e5a30 100644 --- a/src/routes/(app)/send/ecash/+page.server.js +++ b/src/routes/(app)/send/ecash/+page.server.js @@ -3,20 +3,15 @@ import { auth, post, fd } from "$lib/utils"; export const actions = { default: async ({ cookies, request }) => { - let token; + let id; try { let body = await fd(request); - ({ token } = await post("/mint", body, auth(cookies))); - console.log("token", token) + ({ id } = await post("/mint", body, auth(cookies))); } catch (e) { - console.log(e) console.log("problem creating ecash", e); return fail(400, { message: e.message }); } - cookies.set("ecash", token, { path: "/" }); - - console.log("redirecting") - redirect(307, `/${cookies.get("username")}/ecash`); + redirect(307, `/ecash/${id}`); }, }; diff --git a/src/routes/(app)/voucher/[...token]/+page.server.js b/src/routes/(app)/voucher/[...token]/+page.server.js index dfcbb5f5..5f90ba64 100644 --- a/src/routes/(app)/voucher/[...token]/+page.server.js +++ b/src/routes/(app)/voucher/[...token]/+page.server.js @@ -1,14 +1,20 @@ import { validate } from "bitcoin-address-validation"; import bip21 from "bip21"; import { auth, get, isLiquid, post } from "$lib/utils"; -import { fail, redirect } from "@sveltejs/kit"; +import { error, fail, redirect } from "@sveltejs/kit"; import { PUBLIC_DOMAIN } from "$env/static/public"; import parse from "$lib/parse"; import { test } from "$lib/parse"; -export async function load({ cookies, params, request, url }) { - console.log(params.token); - await parse(params.token, url.host, cookies); +export async function load({ cookies, params, parent, request, url }) { + let { user } = await parent(); + if (!user) redirect(307, `/register?redirect=${url.pathname}`); + + let { token } = params; + if (!token.startsWith("cashu")) token = await get(`/cash/${token}`); + await parse(token, url.host, cookies); + + if (token) error(409, "Token could not be redeemed. Was it already spent?"); } export const actions = { diff --git a/src/routes/(app)/voucher/[...token]/+page.svelte b/src/routes/(app)/voucher/[...token]/+page.svelte index f5b7b882..2fd4b879 100644 --- a/src/routes/(app)/voucher/[...token]/+page.svelte +++ b/src/routes/(app)/voucher/[...token]/+page.svelte @@ -13,6 +13,8 @@ export let data; export let form; + + let { token } = data; data.subject = data.user; let el, text, pasted, w; @@ -23,7 +25,6 @@ text = await navigator.clipboard.readText(); }; - $: if (browser && pasted && text) el.click() && (pasted = false); -- cgit v1.2.3