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 --- src/components/Avatar.svelte | 2 +- src/lib/parse.js | 1 + src/locales/en.json | 4 +- .../(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 +- 10 files changed, 115 insertions(+), 23 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') diff --git a/src/components/Avatar.svelte b/src/components/Avatar.svelte index 227200d7..4922c065 100644 --- a/src/components/Avatar.svelte +++ b/src/components/Avatar.svelte @@ -8,7 +8,7 @@ export let disabled = false; $: s = size.toString(); - $: link = user.anon ? `/${user.pubkey}` : `/${user.username}`; + $: link = user?.anon ? `/${user.pubkey}` : `/${user.username}`; $: src = ($avatar?.id && $avatar.id === user.id && $avatar.src) || diff --git a/src/lib/parse.js b/src/lib/parse.js index fa4cb002..3470fb52 100644 --- a/src/lib/parse.js +++ b/src/lib/parse.js @@ -63,6 +63,7 @@ export default async (t, host, cookies) => { claimed = await post(`/claim`, { token: t }, auth(cookies)); claimed = { ok: true }; } catch (e) { + console.log(e); return e.message; } if (claimed.ok) { diff --git a/src/locales/en.json b/src/locales/en.json index 20dac0c5..20160b0d 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -316,8 +316,8 @@ "voucher": "Redeem voucher", "qr": "QR", "copy": "Copy", - "copyLink": "Copy Link", - "copyText": "Copy Text", + "copyLink": "Copy link", + "copyText": "Copy text", "openLink": "Open wallet", "setAmount": "Set amount", "moreOptions": "More options", 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