From 988873a523eea6fa5392dbc6d2ff315ae84bcb97 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 3 Dec 2024 12:20:37 -0800 Subject: move nostr settings --- src/components/PasswordInput.svelte | 4 +- src/lib/utils.ts | 2 - src/locales/en.json | 12 +- src/routes/(app)/+layout.server.ts | 6 +- src/routes/(app)/settings/+layout.server.ts | 4 +- src/routes/(app)/settings/+layout.svelte | 3 +- src/routes/(app)/settings/nostr/+page.svelte | 145 +++++++++++++++++++++ src/routes/(app)/settings/preferences/+page.svelte | 25 ++-- src/routes/(app)/settings/security/+page.svelte | 48 +------ 9 files changed, 178 insertions(+), 71 deletions(-) create mode 100644 src/routes/(app)/settings/nostr/+page.svelte (limited to 'src') diff --git a/src/components/PasswordInput.svelte b/src/components/PasswordInput.svelte index 860899c2..8c7d8d7c 100644 --- a/src/components/PasswordInput.svelte +++ b/src/components/PasswordInput.svelte @@ -4,11 +4,11 @@ show = $bindable(), value = $bindable(), focus = () => {}, - placeholder, + placeholder = undefined, } = $props(); let toggle = (e) => { - e.preventDefault(); + e?.preventDefault(); show = !show; }; diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 9cf87277..2e3fd658 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -98,8 +98,6 @@ export const copyNoNewlines = (text: string) => { success("Copied!"); }; -export const protectedRoutes: RegExp[] = [/customers/, /settings/, /payments/]; - let recent: string[] = []; export const success = (m: string, clear = true) => { if (recent.includes(m)) return; diff --git a/src/locales/en.json b/src/locales/en.json index cc8637c7..25d4813d 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1,7 +1,7 @@ { "accounts": { "showQR": "Show QR", - "revealNwc": "Reveal NWC", + "revealNwc": "Reveal connection string", "finish": "Finish", "back": "Back", "next": "Next", @@ -248,6 +248,7 @@ "placeholder": "Enter an address, invoice or username" }, "settings": { + "connectNostr": "Nostr Wallet Connect", "pleaseEnterYourPassword": "Please enter your password", "memoPrompt": "Checkout instructions", "memoPromptPlaceholder": "e.g. Please enter your name for the order", @@ -258,7 +259,8 @@ "destinationPlaceholder": "Enter a Bitcoin, Liquid or Lightning address", "reserve": "Reserve amount", "reserveDesc": "The amount to be left in your account after the withdrawal is complete", - "shopify": "Shopify integration", + "nostr": "Nostr", + "shopify": "Shopify", "threshold": "Autowithdrawal threshold", "thresholdDesc": "When your balance exceeds this amount, a withdrawal will be triggered", "autoWithdraw": "Autowithdrawal", @@ -269,8 +271,10 @@ "pushNotificationsDisabled": "You've denied notification permission on this device. Check your browser settings if you want to undo that.", "notificationsDesc": "Receive an email whenever a payment lands in your account", "seedPhrase": "Seed phrase", - "nostrKeys": "Nostr key", - "nostrDescription": "Your nostr key is used to sign and decrypt messages, keep it safe or someone may be able to impersonate you.", + "nostrKeys": "Nostr secret key", + "nostrDescription": "Your nostr secret key is used to sign and decrypt messages, keep it safe or someone may be able to impersonate you.", + "nwc": "Nostr wallet connect", + "nwcDescription": "Enable your nostr app to send payments from your account", "seedDescription": "This 12 word seed phrase is used to derive your nostr private key and your self-custodial wallet keys which determine your auto-withdrawal addresses. Back it up and don't let anyone see it.", "emailDescription": "For password resets and payment notifications only", "hideNsec": "Hide nostr secret key", diff --git a/src/routes/(app)/+layout.server.ts b/src/routes/(app)/+layout.server.ts index d490a684..b024edc1 100644 --- a/src/routes/(app)/+layout.server.ts +++ b/src/routes/(app)/+layout.server.ts @@ -1,4 +1,4 @@ -import { auth, get, protectedRoutes, sleep } from "$lib/utils"; +import { auth, get, sleep } from "$lib/utils"; import { error, redirect } from "@sveltejs/kit"; export async function load({ cookies, request, url, params }) { @@ -47,10 +47,6 @@ export async function load({ cookies, request, url, params }) { redirect(307, `/${user.username}`); } - if (protectedRoutes.find((p) => pathname.match(p)) && !user) { - redirect(307, "/login"); - } - if (user && !user.pubkey && !pathname.includes("generate")) { console.log("user missing pubkey", user); redirect(303, "/generate"); diff --git a/src/routes/(app)/settings/+layout.server.ts b/src/routes/(app)/settings/+layout.server.ts index cd63d4f0..bcb7dbe2 100644 --- a/src/routes/(app)/settings/+layout.server.ts +++ b/src/routes/(app)/settings/+layout.server.ts @@ -1,7 +1,9 @@ import { auth, get } from "$lib/utils"; import { redirect } from "@sveltejs/kit"; -export async function load({ cookies, params, url }) { +export async function load({ cookies, params, parent, url }) { + const { user } = await parent(); + if (!user) redirect(307, `/register?redirect=${url.pathname}`); const tab = url.pathname.split("/").filter(Boolean).pop(); if (tab === "settings") redirect(307, `${url.pathname}/account`); params.cookies = cookies.getAll(); diff --git a/src/routes/(app)/settings/+layout.svelte b/src/routes/(app)/settings/+layout.svelte index edf256ab..b11927c1 100644 --- a/src/routes/(app)/settings/+layout.svelte +++ b/src/routes/(app)/settings/+layout.svelte @@ -40,7 +40,6 @@ { name: "account", key: "ACCOUNT" }, { name: "preferences", key: "POINT_OF_SALE" }, { name: "security", key: "SECURITY" }, - { name: "shopify", key: "SHOPIFY" }, ]; let { address, id, username } = user; @@ -212,7 +211,7 @@ type="button" class="hover:opacity-80" class:font-bold={tab === name || - (tab === "shopify" && name === "pos")} + (name === "preferences" && ["nostr", "shopify"].includes(tab))} >{$t(`user.settings.${key}`)} diff --git a/src/routes/(app)/settings/nostr/+page.svelte b/src/routes/(app)/settings/nostr/+page.svelte new file mode 100644 index 00000000..e81682dd --- /dev/null +++ b/src/routes/(app)/settings/nostr/+page.svelte @@ -0,0 +1,145 @@ + + +
+ + +

+ {$t("user.settings.nwcDescription")} +

+ +
+ + +
{$t("user.settings.connectNostr")}
+
+ + {#if !nwc} + + {/if} +
+
+ +{#if nwc} +
+ {nwc} +
+
+ + + +
{$t("user.receive.showQR")}
+
+
+{/if} + +
+
{$t("user.nostrPubkey")}
+
+
+ {npub} +
+
+ + + + +
+
+
+ +
+ + +

+ {$t("user.settings.nostrDescription")} +

+ +
+ + + +
+ + {#if importing} + + {/if} + + {#if revealNsec} + + {/if} +
diff --git a/src/routes/(app)/settings/preferences/+page.svelte b/src/routes/(app)/settings/preferences/+page.svelte index a08eb952..28e43a08 100644 --- a/src/routes/(app)/settings/preferences/+page.svelte +++ b/src/routes/(app)/settings/preferences/+page.svelte @@ -180,7 +180,7 @@ - +
+ + + + + + + +
diff --git a/src/routes/(app)/settings/security/+page.svelte b/src/routes/(app)/settings/security/+page.svelte index d40439ac..8298652b 100644 --- a/src/routes/(app)/settings/security/+page.svelte +++ b/src/routes/(app)/settings/security/+page.svelte @@ -1,6 +1,6 @@