From 5f1c31b6618f0b895fb98c8f2a841989625eaf16 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 26 Nov 2025 10:56:00 -0800 Subject: ark --- src/components/InvoiceActions.svelte | 79 +++++++++------ src/components/InvoiceData.svelte | 2 +- src/lib/ark.ts | 15 +++ src/lib/parse.ts | 1 + src/lib/utils.ts | 1 + src/routes/(app)/+layout.svelte | 32 +++++- src/routes/(app)/ark/+page.svelte | 13 +-- src/routes/(app)/invoice/[id]/+layout.server.ts | 1 + src/routes/(app)/invoice/[id]/+page.svelte | 8 ++ .../(app)/send/ark/[address]/+layout.server.ts | 25 +++++ .../(app)/send/ark/[address]/+page.server.ts | 10 ++ src/routes/(app)/send/ark/[address]/+page.svelte | 80 +++++++++++++++ .../[amount]/[...feeRate]/+page.server.ts | 40 ++++++++ .../[address]/[amount]/[...feeRate]/+page.svelte | 107 +++++++++++++++++++++ 14 files changed, 373 insertions(+), 41 deletions(-) create mode 100644 src/routes/(app)/send/ark/[address]/+layout.server.ts create mode 100644 src/routes/(app)/send/ark/[address]/+page.server.ts create mode 100644 src/routes/(app)/send/ark/[address]/+page.svelte create mode 100644 src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.server.ts create mode 100644 src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.svelte (limited to 'src') diff --git a/src/components/InvoiceActions.svelte b/src/components/InvoiceActions.svelte index e2a31ab8..08f9920d 100644 --- a/src/components/InvoiceActions.svelte +++ b/src/components/InvoiceActions.svelte @@ -91,7 +91,7 @@ - {#if txt.length > 120} + {#if txt?.length > 120}
+
Lightning
+ + {:else} + + {/if}
- - + {#if aid === user.id} + + {/if} diff --git a/src/components/InvoiceData.svelte b/src/components/InvoiceData.svelte index 8edc9257..e08916fe 100644 --- a/src/components/InvoiceData.svelte +++ b/src/components/InvoiceData.svelte @@ -53,7 +53,7 @@ {/if} -{#if !showQr || txt.length <= 120} +{#if !showQr || txt?.length <= 120}
diff --git a/src/lib/ark.ts b/src/lib/ark.ts index 0986983a..2dec57d9 100644 --- a/src/lib/ark.ts +++ b/src/lib/ark.ts @@ -1,5 +1,20 @@ import { persistLocal } from "$lib/store"; +import { SingleKey, Wallet } from "@arkade-os/sdk"; const prefix = "ark"; export const mnemonic = persistLocal(`${prefix}mnemonic`, ""); export const password = persistLocal(`${prefix}password`, ""); +export const arkkey = persistLocal(`${prefix}key`, ""); + +export const getWallet = async () => { + // const identity = SingleKey.fromHex(get(arkkey)); + + const identity = SingleKey.fromHex( + "ce66c68f8875c0c98a502c666303dc183a21600130013c06f9d1edf60207abf2", + ); + + return Wallet.create({ + identity, + arkServerUrl: "https://arkade.computer", + }); +}; diff --git a/src/lib/parse.ts b/src/lib/parse.ts index 6ff4556c..c69032d1 100644 --- a/src/lib/parse.ts +++ b/src/lib/parse.ts @@ -11,6 +11,7 @@ export default async (s, host, cookies) => { let invoice; let user; + if (t.startsWith("ark")) redirect(307, `/send/ark/${t}`); if (t.startsWith("http")) redirect(307, t); if (t.startsWith(host)) redirect(307, `http://${t}`); diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 14a1370e..d3333280 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -398,6 +398,7 @@ export const wait = async ( }; export const types = { + ark: "ark", bitcoin: "bitcoin", liquid: "liquid", lightning: "lightning", diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index 830e5291..cf29ad7c 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -1,4 +1,5 @@ + +
+

{$t("payments.send")}

+ +
{address}
+ + + +
+ + +
+ +
+
+
diff --git a/src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.server.ts b/src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.server.ts new file mode 100644 index 00000000..926a141d --- /dev/null +++ b/src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.server.ts @@ -0,0 +1,40 @@ +import getRates from "$lib/rates"; +import { auth, fd, get, post } from "$lib/utils"; +import { fail, redirect } from "@sveltejs/kit"; + +export async function load({ params: { address, amount }, cookies, parent }) { + const rates = await getRates(); + const { user } = await parent(); + const aid = cookies.get("aid") || user.id; + + const account = await get(`/account/${aid}`, auth(cookies)); + const rate = rates[user.currency]; + console.log("rate", rate); + + return { + account, + amount, + address, + rate, + }; +} + +export const actions = { + default: async ({ + cookies, + params: { address, amount, feeRate }, + request, + }) => { + let p; + try { + const body = await fd(request); + p = await post("/ark/send", body, auth(cookies)); + } catch (e) { + console.log("problem sending bitcoin", e); + const { message } = e as Error; + return fail(400, { address, amount, feeRate, message }); + } + + redirect(307, `/sent/${p.id}`); + }, +}; diff --git a/src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.svelte b/src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.svelte new file mode 100644 index 00000000..e77abdb5 --- /dev/null +++ b/src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.svelte @@ -0,0 +1,107 @@ + + +
+

{$t("payments.send")}

+ + {#if form?.message || message} +
+
{form?.message || message}
+
+ {:else} +
{address}
+ + + +
+ + + + +
+ +
+
+ {/if} +
+ +{#if passwordPrompt} + +{/if} + + -- cgit v1.2.3