From 1f63848ca9fb01336f04b41434de1cc06a5b3d93 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 10 Sep 2024 20:39:47 -0700 Subject: move routes --- src/routes/(app)/sent/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/routes/(app)/sent') diff --git a/src/routes/(app)/sent/+page.svelte b/src/routes/(app)/sent/+page.svelte index 136bd395..12e13c41 100644 --- a/src/routes/(app)/sent/+page.svelte +++ b/src/routes/(app)/sent/+page.svelte @@ -43,7 +43,7 @@ - +
-- cgit v1.2.3 From 2114156be3f89a2ef4c5bd13fd6d7a51d8fbc135 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 12 Sep 2024 15:23:45 -0700 Subject: self custodial send --- .env.production | 1 + bun.lockb | Bin 158882 -> 161519 bytes package.json | 3 +- src/components/Account.svelte | 17 ++- src/components/LandingHeader.svelte | 16 +-- src/components/Request.svelte | 39 ------ src/lib/invoice.ts | 7 +- src/lib/store.ts | 1 + src/lib/utils.ts | 41 ++++++- src/locales/en.json | 1 + src/routes/(app)/+error.svelte | 38 ++++++ src/routes/(app)/+layout.svelte | 6 - src/routes/(app)/[username]/(profile)/+page.svelte | 42 ++++--- src/routes/(app)/[username]/+layout.server.ts | 1 - src/routes/(app)/account/setup/step2/+page.svelte | 28 ++++- src/routes/(app)/invoice/+page.server.ts | 4 +- src/routes/(app)/invoice/[id]/+layout.server.ts | 7 +- src/routes/(app)/invoice/[id]/+page.svelte | 4 +- src/routes/(app)/logout/+page.server.ts | 1 + .../(app)/payments/[...page]/+page.server.ts | 3 +- src/routes/(app)/qr/[text]/+page.svelte | 4 - .../(app)/send/bitcoin/[address]/+page.server.ts | 7 ++ .../(app)/send/bitcoin/[address]/+page.svelte | 4 +- .../[amount]/[...feeRate]/+page.server.ts | 27 +++- .../[address]/[amount]/[...feeRate]/+page.svelte | 136 ++++++++++++++++++++- src/routes/(app)/send/ecash/+page.svelte | 6 - src/routes/(app)/sent/+page.server.ts | 3 +- src/routes/(app)/settings/[...tab]/+page.svelte | 2 +- src/routes/(static)/+layout.svelte | 2 +- src/routes/(static)/login/+page.svelte | 2 +- src/routes/(static)/register/+page.svelte | 2 +- src/routes/(static)/support/+page.svelte | 9 +- src/routes/+error.svelte | 1 - 33 files changed, 325 insertions(+), 140 deletions(-) delete mode 100644 src/components/Request.svelte create mode 100644 src/routes/(app)/+error.svelte create mode 100644 src/routes/(app)/send/bitcoin/[address]/+page.server.ts (limited to 'src/routes/(app)/sent') diff --git a/.env.production b/.env.production index 1ae57c17..8b72abf4 100644 --- a/.env.production +++ b/.env.production @@ -6,3 +6,4 @@ PUBLIC_LIQUID_EXPLORER=https://liquid.network PUBLIC_DOMAIN=coinos.io PUBLIC_COINOS_PUBKEY=ba80990666ef0b6f4ba5059347beb13242921e54669e680064ca755256a1e3a6 PUBLIC_COINOS_RELAY=wss://relay.coinos.io +PUBLIC_COINOS_NETWORK=regtest diff --git a/bun.lockb b/bun.lockb index df7d1899..97e0841d 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index 848db710..2ed4c699 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,9 @@ "@capacitor/cli": "^6.0.0", "@capacitor/core": "^6.0.0", "@capacitor/ios": "^6.1.2", - "@scure/base": "^1.1.1", + "@scure/base": "^1.1.8", "@scure/bip39": "^1.2.1", + "@scure/btc-signer": "^1.3.2", "@sveltejs/adapter-node": "^2.0.0", "@sveltejs/kit": "^2.5.22", "@sveltejs/vite-plugin-svelte": "^3.0.0", diff --git a/src/components/Account.svelte b/src/components/Account.svelte index eb1b0bac..f83068b5 100644 --- a/src/components/Account.svelte +++ b/src/components/Account.svelte @@ -1,4 +1,5 @@ - +
-
- -
-
{type} account
-
-
+
- +
diff --git a/src/components/Request.svelte b/src/components/Request.svelte deleted file mode 100644 index 297b7438..00000000 --- a/src/components/Request.svelte +++ /dev/null @@ -1,39 +0,0 @@ - - -{#if $request} -
-
-
-
- -

- {$request.requester.username} - {$t("payments.readyToPay")} -

-
-
- -
-
-{/if} diff --git a/src/lib/invoice.ts b/src/lib/invoice.ts index 3c885346..0ab0a9af 100644 --- a/src/lib/invoice.ts +++ b/src/lib/invoice.ts @@ -1,13 +1,14 @@ -import { auth, get, post } from "$lib/utils"; +import { auth, get, post, setAccount } from "$lib/utils"; import { redirect } from "@sveltejs/kit"; -export default async ({ cookies, request }) => { +export default async ({ cookies, request, url }) => { let form = await request.formData(); let rates = await get("/rates"); let amount = parseInt(form.get("amount")); let invoice = { + account, amount, items: JSON.parse(form.get("items")), memo: form.get("memo"), @@ -16,7 +17,7 @@ export default async ({ cookies, request }) => { type: form.get("type"), prompt: form.get("prompt") === "true", rate: parseFloat(form.get("rate")) || rates[form.get("currency")], - id: undefined + id: undefined, }; let user = { username: form.get("username"), currency: form.get("currency") }; diff --git a/src/lib/store.ts b/src/lib/store.ts index 3c1ff321..42b41127 100644 --- a/src/lib/store.ts +++ b/src/lib/store.ts @@ -38,6 +38,7 @@ let persistLocal = (key, defaultValue: any = undefined) => { return s; }; +export let account = writable(); export let amountPrompt = persistLocal("amountPrompt"); export let avatar = writable(); export let banner = writable(); diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 69e0f949..c20a7d29 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,7 +1,7 @@ import { browser } from "$app/environment"; import { toast } from "@zerodevx/svelte-toast"; import { goto } from "$app/navigation"; -import { PUBLIC_COINOS_URL } from "$env/static/public"; +import { PUBLIC_COINOS_NETWORK, PUBLIC_COINOS_URL } from "$env/static/public"; import { page } from "$app/stores"; import { get as getStore } from "svelte/store"; @@ -41,7 +41,11 @@ export let get = (url: string, headers = {}) => { }); }; -export let post = async (url: string, body: object, headers: HeadersInit | undefined = undefined) => { +export let post = async ( + url: string, + body: object, + headers: HeadersInit | undefined = undefined +) => { headers = { "content-type": "application/json", accept: "application/json", @@ -242,7 +246,11 @@ export let select = (el: HTMLInputElement): any => export let sleep = (n: number): Promise => new Promise((r) => setTimeout(r, n)); -export let wait = async (f: () => boolean | Promise, n: number = 100, s: number = 300): Promise => { +export let wait = async ( + f: () => boolean | Promise, + n: number = 100, + s: number = 300 +): Promise => { let i = 0; while (!(await f()) && i < s) { await sleep(n); @@ -327,3 +335,30 @@ export function setCookie(name: string, value: string, seconds: number): void { const expires = "expires=" + now.toUTCString(); document.cookie = name + "=" + value + ";" + expires + ";path=/"; } + +export let network = { + bitcoin: { + bech32: "bc", + pubKeyHash: 0x00, + scriptHash: 0x05, + wif: 0x80, + }, + regtest: { + bech32: "bcrt", + pubKeyHash: 0x6f, + scriptHash: 0xc4, + wif: 0xef, + }, +}[PUBLIC_COINOS_NETWORK]; + +export let versions = { + bitcoin: { + private: 0x0488ade4, + public: 0x0488b21e, + }, + regtest: { + private: 0x04358394, + public: 0x043587cf, + }, +}[PUBLIC_COINOS_NETWORK]; + diff --git a/src/locales/en.json b/src/locales/en.json index b1bbe1c4..fd2807b4 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -299,6 +299,7 @@ } }, "payments": { + "enterWalletPass": "Please enter your wallet password", "legacyVersion": "Legacy version", "newVersion": "New version", "income": "Income", diff --git a/src/routes/(app)/+error.svelte b/src/routes/(app)/+error.svelte new file mode 100644 index 00000000..6ce7979c --- /dev/null +++ b/src/routes/(app)/+error.svelte @@ -0,0 +1,38 @@ + + +
+
+ + + +
+ +
+
+
+

Error

+
+

Something went wrong

+

{$page.error.message}

+ + +
+
+
diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index 0ff4816d..05ca0d0c 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -17,7 +17,6 @@ import AppHeader from "$comp/AppHeader.svelte"; import Invoice from "$comp/Invoice.svelte"; import Password from "$comp/Password.svelte"; - import Request from "$comp/Request.svelte"; import { getCookie, warning, protectedRoutes } from "$lib/utils"; import { t, locale, loading } from "$lib/translations"; import { goto, onNavigate } from "$app/navigation"; @@ -36,7 +35,6 @@ }); let { generate, rate, user, subject, token, rates } = data; - console.log("SUB", subject) $: update(data); let update = (data) => { @@ -127,10 +125,6 @@ {/if} -{#if $request} - -{/if} - + + + + \ No newline at end of file -- cgit v1.2.3 From 4373f870ad528811a9e0bb1a6749b01d5a7ec051 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 24 Sep 2024 15:57:04 -0700 Subject: stylin --- src/components/Account.svelte | 40 +++++++++------ src/components/WalletPass.svelte | 8 ++- src/locales/en.json | 2 +- src/routes/(app)/[username]/(profile)/+page.svelte | 4 +- src/routes/(app)/account/[id]/+page.svelte | 20 ++++---- src/routes/(app)/account/pass/+page.svelte | 4 +- src/routes/(app)/account/seed/+page.svelte | 4 +- src/routes/(app)/invoice/+page.server.ts | 1 - .../(app)/pay/[username]/[...amount]/+page.svelte | 2 +- src/routes/(app)/payment/[id]/+page.svelte | 44 ---------------- src/routes/(app)/payments/[...page]/+page.svelte | 59 ++++++++++------------ src/routes/(app)/scan/+page.svelte | 4 -- .../(app)/send/bitcoin/[address]/+layout.server.ts | 19 +++++-- src/routes/(app)/sent/[id]/+page.svelte | 2 +- 14 files changed, 90 insertions(+), 123 deletions(-) (limited to 'src/routes/(app)/sent') diff --git a/src/components/Account.svelte b/src/components/Account.svelte index 8f72119e..d4a89556 100644 --- a/src/components/Account.svelte +++ b/src/components/Account.svelte @@ -10,42 +10,52 @@ $: refresh(account); let refresh = (a) => ({ seed, balance, id } = a); - let setAccount = () => - (document.cookie = `aid=${id}; path=/; max-age=86400`); + let setAccount = () => (document.cookie = `aid=${id}; path=/; max-age=86400`); -
+
-
- +
+ - + + + + + diff --git a/src/components/WalletPass.svelte b/src/components/WalletPass.svelte index 69b95107..75c94f34 100644 --- a/src/components/WalletPass.svelte +++ b/src/components/WalletPass.svelte @@ -22,7 +22,6 @@ name="password" type="text" required - class="bg-primary" bind:value={password} autocapitalize="none" use:focus @@ -32,7 +31,6 @@ name="password" type="password" required - class="bg-primary" bind:value={password} autocapitalize="none" use:focus @@ -41,7 +39,7 @@ @@ -49,7 +47,7 @@
diff --git a/src/locales/en.json b/src/locales/en.json index f65841d3..1d875536 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -323,7 +323,7 @@ } }, "payments": { - "enterWalletPass": "Please enter your wallet password", + "enterWalletPass": "Wallet password", "legacyVersion": "Legacy version", "newVersion": "New version", "income": "Income", diff --git a/src/routes/(app)/[username]/(profile)/+page.svelte b/src/routes/(app)/[username]/(profile)/+page.svelte index 0d85fc56..399a33e9 100644 --- a/src/routes/(app)/[username]/(profile)/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/+page.svelte @@ -35,10 +35,10 @@
+ + + + + {#if mnemonic} diff --git a/src/routes/(app)/account/pass/+page.svelte b/src/routes/(app)/account/pass/+page.svelte index 36992a98..77298cc4 100644 --- a/src/routes/(app)/account/pass/+page.svelte +++ b/src/routes/(app)/account/pass/+page.svelte @@ -133,14 +133,14 @@ diff --git a/src/routes/(app)/account/seed/+page.svelte b/src/routes/(app)/account/seed/+page.svelte index 4e55534b..ec5ab1cf 100644 --- a/src/routes/(app)/account/seed/+page.svelte +++ b/src/routes/(app)/account/seed/+page.svelte @@ -58,7 +58,7 @@ @@ -66,7 +66,7 @@ diff --git a/src/routes/(app)/invoice/+page.server.ts b/src/routes/(app)/invoice/+page.server.ts index 45389f8c..b8a2fe06 100644 --- a/src/routes/(app)/invoice/+page.server.ts +++ b/src/routes/(app)/invoice/+page.server.ts @@ -4,7 +4,6 @@ import type { Invoice } from "$lib/types"; export let load = async ({ cookies, parent }) => { let aid = cookies.get("aid"); - console.log("AID", aid) let { subject, user, rates } = await parent(); let invoice: Invoice = { diff --git a/src/routes/(app)/pay/[username]/[...amount]/+page.svelte b/src/routes/(app)/pay/[username]/[...amount]/+page.svelte index f45218ea..8e3abab4 100644 --- a/src/routes/(app)/pay/[username]/[...amount]/+page.svelte +++ b/src/routes/(app)/pay/[username]/[...amount]/+page.svelte @@ -61,7 +61,7 @@
{/if} -
+
- - - -

{$t(amount < 0 ? "payments.sent" : "payments.received")} @@ -241,41 +234,4 @@

{/if} - -
- {#if user.admin} - - {/if} - - {#if user.hasprinter} - - {:else} - - - - {/if} -
diff --git a/src/routes/(app)/payments/[...page]/+page.svelte b/src/routes/(app)/payments/[...page]/+page.svelte index 2ffed537..bfd30f55 100644 --- a/src/routes/(app)/payments/[...page]/+page.svelte +++ b/src/routes/(app)/payments/[...page]/+page.svelte @@ -78,7 +78,9 @@ platform_fee: p.ourfee, amount_fiat: f((p.amount * p.rate) / sats, p.currency), fee_fiat: p.fee ? f((p.fee * p.rate) / sats, p.currency) : null, - platform_fee_fiat: p.ourfee ? f((p.ourfee * p.rate) / sats, p.currency) : null, + platform_fee_fiat: p.ourfee + ? f((p.ourfee * p.rate) / sats, p.currency) + : null, tip_fiat: p.tip ? f((p.tip * p.rate) / sats, p.currency) : null, total_fiat: f(((p.amount + (p.tip || 0)) * p.rate) / sats, p.currency), })); @@ -127,30 +129,28 @@ }; -
-

+
+

{$t("payments.header")}

-
-