From 4585996d3fcace056993d3f0c6959cd7f31e4438 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 23 Feb 2024 12:19:53 -0800 Subject: payment memos --- src/lib/invoice.js | 15 ++-- src/lib/utils.js | 3 + src/locales/en.json | 3 + src/routes/(app)/[username]/(profile)/+page.svelte | 7 +- .../[username]/(profile)/request/+page.server.js | 15 ---- .../[username]/(profile)/request/+page.svelte | 35 --------- .../[username]/(profile)/request/sent/+page.svelte | 21 ------ .../[username]/invoice/[id]/+layout.server.js | 2 +- .../(app)/[username]/invoice/[id]/+page.svelte | 12 +-- .../[username]/invoice/[id]/memo/+page.server.js | 12 +++ .../[username]/invoice/[id]/memo/+page.svelte | 88 ++++++++++++++++++++++ .../(app)/[username]/invoice/[id]/tip/+page.svelte | 3 +- .../[username]/receive/[...param]/+page.svelte | 5 -- .../(app)/[username]/request/[id]/+page.server.js | 26 ------- .../(app)/[username]/request/[id]/+page.svelte | 58 -------------- .../(app)/[username]/settings/[...tab]/_pos.svelte | 7 ++ src/routes/(app)/payment/[id]/+page.svelte | 2 - src/routes/(app)/send/invoice/[id]/+page.server.js | 4 + 18 files changed, 134 insertions(+), 184 deletions(-) delete mode 100644 src/routes/(app)/[username]/(profile)/request/+page.server.js delete mode 100644 src/routes/(app)/[username]/(profile)/request/+page.svelte delete mode 100644 src/routes/(app)/[username]/(profile)/request/sent/+page.svelte create mode 100644 src/routes/(app)/[username]/invoice/[id]/memo/+page.server.js create mode 100644 src/routes/(app)/[username]/invoice/[id]/memo/+page.svelte delete mode 100644 src/routes/(app)/[username]/request/[id]/+page.server.js delete mode 100644 src/routes/(app)/[username]/request/[id]/+page.svelte (limited to 'src') diff --git a/src/lib/invoice.js b/src/lib/invoice.js index d2f70146..98f6f2ca 100644 --- a/src/lib/invoice.js +++ b/src/lib/invoice.js @@ -6,17 +6,16 @@ export default async ({ cookies, request, url }) => { let rates = await get("/rates"); let amount = parseInt(form.get("amount")); - let request_id = form.get("request_id"); - if (request_id === "undefined") request_id = undefined; let invoice = { amount, items: JSON.parse(form.get("items")), + memo: form.get("memo"), + memoPrompt: form.get("memoPrompt"), tip: parseInt(form.get("tip")) || 0, type: form.get("type"), prompt: form.get("prompt") === "true", rate: parseFloat(form.get("rate")) || rates[form.get("currency")], - request_id, }; let user = { username: form.get("username"), currency: form.get("currency") }; @@ -24,14 +23,12 @@ export default async ({ cookies, request, url }) => { invoice = await post("/invoice", { invoice, user }, auth(cookies)); let { id } = invoice; - if (request_id) { - if (url.pathname.endsWith("tip")) { - redirect(307, `/send/invoice/${id}`); - } + if (invoice.prompt && invoice.tip === null) + redirect(307, `/${user.username}/invoice/${id}/tip`); - redirect(307, `/${user.username}/request/${request_id}`); + if (invoice.memoPrompt && !invoice.memo) { + redirect(307, `/${user.username}/invoice/${id}/memo`); } - if (invoice.prompt) redirect(307, `/${user.username}/invoice/${id}/tip`); else redirect(307, `/${user.username}/invoice/${id}`); }; diff --git a/src/lib/utils.js b/src/lib/utils.js index 8e3ff004..0b76365c 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -227,6 +227,9 @@ export let back = () => export let focus = (el) => browser && screen.width > 1280 && setTimeout(() => el.focus(), 1); +export let select = (el) => + browser && screen.width > 1280 && setTimeout(() => el.select(), 1); + export let sleep = (n) => new Promise((r) => setTimeout(r, n)); export let wait = async (f, n = 100, s = 300) => { let i = 0; diff --git a/src/locales/en.json b/src/locales/en.json index 76fe4b13..4b18bd64 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -81,6 +81,7 @@ "invoice": { "addTip": "Add a tip", "addTipq": "Add a tip?", + "addMemo": "Add memo", "done": "Done", "paymentSuccessful": "Payment received!", "invoice": "Invoice", @@ -204,6 +205,8 @@ "placeholder": "Enter an address, invoice or username" }, "settings": { + "memoPrompt": "Checkout instructions", + "memoPromptPlaceholder": "e.g. Please enter your name for the order", "rememberFor": "Remember for", "import": "Import key", "destination": "Autowithdrawal address", diff --git a/src/routes/(app)/[username]/(profile)/+page.svelte b/src/routes/(app)/[username]/(profile)/+page.svelte index 0fbe90ab..e681c214 100644 --- a/src/routes/(app)/[username]/(profile)/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/+page.svelte @@ -78,6 +78,7 @@ currency, items: items.filter((i) => i.quantity > 0), prompt: subject.prompt, + memoPrompt: subject.memoPrompt, rate, }; @@ -86,9 +87,7 @@ user: { username: subject.username }, }); - goto(`/${subject.username}/invoice/${id}`, { - invalidateAll: true, - }); + goto(`/send/invoice/${id}`, { invalidateAll: true }); }; let reset = () => @@ -167,7 +166,7 @@ {#each items as i (i.id)}