diff options
| author | Adam Soltys <[email protected]> | 2026-02-14 00:09:15 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-02-14 00:09:15 -0800 |
| commit | d242a387279119cfc6e191eff3b4e2228cbb5a4e (patch) | |
| tree | bde7709ec71eb7a4119012e7d7a901d93deecc36 /src | |
| parent | 193905fb8d3f5638cc865ef29784db9ebe206710 (diff) | |
| download | coinos-ui-d242a387279119cfc6e191eff3b4e2228cbb5a4e.tar.gz coinos-ui-d242a387279119cfc6e191eff3b4e2228cbb5a4e.zip | |
handle forwards
Diffstat (limited to 'src')
4 files changed, 31 insertions, 3 deletions
diff --git a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts index c5149a93..717b5a4c 100644 --- a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts +++ b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts @@ -8,6 +8,16 @@ export async function load({ params: { address, amount, feeRate }, cookies, pare const aid = cookies.get("aid") || user.id; const account = await get(`/account/${aid}`, auth(cookies)); + // Check if this is a forward (e.g. bitcoin vault paying a lightning invoice) + let forward: any = null; + try { + const inv = await get(`/invoice/${address}`); + if (inv?.forward?.startsWith("ln")) { + const parsed = await post("/parse", { payreq: inv.forward }, auth(cookies)); + forward = { alias: parsed.alias, payreq: inv.forward }; + } + } catch {} + if (account.type === "ark") { const serverArkAddress = await get("/ark/address"); return { @@ -16,6 +26,7 @@ export async function load({ params: { address, amount, feeRate }, cookies, pare address, rate: rates[user.currency], serverArkAddress, + forward, }; } @@ -38,6 +49,7 @@ export async function load({ params: { address, amount, feeRate }, cookies, pare subtract, hex, inputs, + forward, }; } catch (e) { const { message } = e as Error; diff --git a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte index 10c46935..1ef38f02 100644 --- a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte +++ b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte @@ -124,7 +124,7 @@ let toggle = () => (submitting = !submitting); - let { account, amount, address, message, fee, fees, subtract, ourfee, hex, inputs } = + let { account, amount, address, message, fee, fees, subtract, ourfee, hex, inputs, forward } = $derived(data); let feeRate: any = $state(data.feeRate); @@ -166,7 +166,14 @@ <div class="text-red-600">{form?.message || message || error}</div> </div> {:else} - <div class="text-xl text-secondary break-all">{address}</div> + {#if forward} + <div class="text-xl"> + <span class="text-secondary">{$t("payments.to")}</span> + <span class="font-semibold">{forward.alias}</span> + </div> + {:else} + <div class="text-xl text-secondary break-all">{address}</div> + {/if} <Amount amount={subtract ? amount - fee - ourfee : amount} rate={$rate} {currency} /> diff --git a/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.server.ts b/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.server.ts index de123e2e..c0b5c475 100644 --- a/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.server.ts +++ b/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.server.ts @@ -19,6 +19,15 @@ export async function load({ cookies, params, parent }) { data.account = account; data.serverArkAddress = await get("/ark/address"); } else if (account.type === "bitcoin") { + const amount = data.amount || parseInt(params.payreq.match(/amount=(\d+)/)?.[1] || "0"); + if (amount) { + const inv = await post( + "/invoice", + { invoice: { type: "bitcoin", amount, forward: params.payreq }, user }, + auth(cookies), + ); + redirect(307, `/send/bitcoin/${inv.hash}/${amount}`); + } data.account = account; } } diff --git a/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.svelte b/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.svelte index a204ca86..38407a0d 100644 --- a/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.svelte +++ b/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.svelte @@ -65,7 +65,7 @@ return; } - if (data.account?.seed) { + if (data.account?.type === "bitcoin") { cancel(); (async () => { |
