aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-10-14 15:37:09 -0700
committerAdam Soltys <[email protected]>2024-10-14 15:37:09 -0700
commit9bf9c7151be64317ec5b8b43fb41064e62dc743a (patch)
tree18668a55a7016c0398e20a49a22889d805d879a4 /src
parentdbb746bf404e7ed302c34b6631a170aff57c64c6 (diff)
downloadcoinos-ui-9bf9c7151be64317ec5b8b43fb41064e62dc743a.tar.gz
coinos-ui-9bf9c7151be64317ec5b8b43fb41064e62dc743a.zip
support lnurl comments
Diffstat (limited to 'src')
-rw-r--r--src/components/Lnurlp.svelte17
-rw-r--r--src/locales/en.json1
-rw-r--r--src/routes/(app)/ln/[lnurl]/+page.server.ts9
3 files changed, 20 insertions, 7 deletions
diff --git a/src/components/Lnurlp.svelte b/src/components/Lnurlp.svelte
index 6785061a..ef6c4e51 100644
--- a/src/components/Lnurlp.svelte
+++ b/src/components/Lnurlp.svelte
@@ -5,9 +5,10 @@
import Spinner from "$comp/Spinner.svelte";
import { pin } from "$lib/store";
- export let data, form, send;
+ export let data, form, send, comment;
let { currency } = data.user;
- let { minSendable, maxSendable, callback, metadata, rates } = data;
+ let { minSendable, maxSendable, commentAllowed, callback, metadata, rates } =
+ data;
$: rate = rates[currency];
@@ -16,7 +17,7 @@
let submit = () => (loading = true);
</script>
-<div class="container px-4 mt-20 max-w-xl mx-auto">
+<div class="container px-4 mt-20 max-w-xl mx-auto space-y-2">
<div class="text-center mb-8">
{#each JSON.parse(metadata) as m}
<div>
@@ -45,6 +46,16 @@
<input name="callback" value={callback} type="hidden" />
<input name="pin" value={$pin} type="hidden" />
+ {#if commentAllowed}
+ <textarea
+ name="text"
+ placeholder={$t("payments.message")}
+ class="w-full p-4 border rounded-xl h-32 text-xl"
+ bind:value={comment}
+ autocapitalize="none"
+ />
+ {/if}
+
<div class="flex w-full">
<button
bind:this={send}
diff --git a/src/locales/en.json b/src/locales/en.json
index 67e6a318..3bc196e6 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -330,6 +330,7 @@
"ok": "Ok",
"cancel": "Cancel",
"failedToRoute": "Failed to route payment, recipient may not be reachable. Try sending a smaller amount or increasing the max fee reserve.",
+ "message": "Message",
"enterWalletPass": "Wallet password",
"legacyVersion": "Legacy version",
"newVersion": "New version",
diff --git a/src/routes/(app)/ln/[lnurl]/+page.server.ts b/src/routes/(app)/ln/[lnurl]/+page.server.ts
index c078ae8e..0caadfc0 100644
--- a/src/routes/(app)/ln/[lnurl]/+page.server.ts
+++ b/src/routes/(app)/ln/[lnurl]/+page.server.ts
@@ -24,7 +24,7 @@ export const actions = {
pay: async ({ fetch, request }) => {
let error;
- let { callback, amount, minSendable, maxSendable } = await fd(request);
+ let { callback, amount, minSendable, maxSendable, comment } = await fd(request);
minSendable = Math.round(minSendable / 1000);
maxSendable = Math.round(maxSendable / 1000);
@@ -34,9 +34,10 @@ export const actions = {
error = `Amount must be at most ${maxSendable} sats`;
if (error) return fail(400, { error });
- let { pr } = await fetch(`${callback}?amount=${amount * 1000}`).then((r) =>
- r.json()
- );
+ let url = `${callback}?amount=${amount * 1000}`;
+
+ if (comment) url += `&comment=${comment}`;
+ let { pr } = await fetch(url).then((r) => r.json());
redirect(307, `/send/lightning/${pr}`);
},