diff --git a/src/app/components/AppContainer.svelte b/src/app/components/AppContainer.svelte index e7fd818..0a3dec1 100644 --- a/src/app/components/AppContainer.svelte +++ b/src/app/components/AppContainer.svelte @@ -4,15 +4,25 @@ import Landing from "@app/components/Landing.svelte" import Toast from "@app/components/Toast.svelte" import PrimaryNav from "@app/components/PrimaryNav.svelte" - import SignUpConfirm from "@app/components/SignUpConfirm.svelte" + import EmailConfirm from "@app/components/EmailConfirm.svelte" + import PasswordReset from "@app/components/PasswordReset.svelte" import {BURROW_URL} from "@app/state" import {modals, pushModal} from "@app/modal" - if (BURROW_URL && $page.route.id === "/confirm-email") { - pushModal(SignUpConfirm, { - email: $page.url.searchParams.get("email"), - token: $page.url.searchParams.get("token"), - }) + if (BURROW_URL && !$pubkey) { + if ($page.url.pathname === "/confirm-email") { + pushModal(EmailConfirm, { + email: $page.url.searchParams.get("email"), + confirm_token: $page.url.searchParams.get("confirm_token"), + }) + } + + if ($page.url.pathname === "/reset-password") { + pushModal(PasswordReset, { + email: $page.url.searchParams.get("email"), + reset_token: $page.url.searchParams.get("reset_token"), + }) + } } diff --git a/src/app/components/SignUpConfirm.svelte b/src/app/components/EmailConfirm.svelte similarity index 92% rename from src/app/components/SignUpConfirm.svelte rename to src/app/components/EmailConfirm.svelte index b13f4ea..2c37f8b 100644 --- a/src/app/components/SignUpConfirm.svelte +++ b/src/app/components/EmailConfirm.svelte @@ -8,7 +8,7 @@ import {BURROW_URL} from "@app/state" export let email - export let token + export let confirm_token const login = () => { pushModal(LogInPassword, {email}, {path: "/"}) @@ -19,7 +19,7 @@ onMount(async () => { const [res] = await Promise.all([ - postJson(BURROW_URL + "/user/confirm", {email, token}), + postJson(BURROW_URL + "/user/confirm-email", {email, confirm_token}), sleep(2000), ]) diff --git a/src/app/components/LogInPassword.svelte b/src/app/components/LogInPassword.svelte index 75394e2..84cdc4e 100644 --- a/src/app/components/LogInPassword.svelte +++ b/src/app/components/LogInPassword.svelte @@ -2,6 +2,7 @@ import {onMount, onDestroy} from "svelte" import {postJson, stripProtocol} from "@welshman/lib" import {Nip46Broker, makeSecret} from "@welshman/signer" + import {normalizeRelayUrl} from "@welshman/util" import {addSession} from "@welshman/app" import Spinner from "@lib/components/Spinner.svelte" import Button from "@lib/components/Button.svelte" @@ -9,8 +10,9 @@ import Icon from "@lib/components/Icon.svelte" import ModalHeader from "@lib/components/ModalHeader.svelte" import ModalFooter from "@lib/components/ModalFooter.svelte" + import PasswordResetRequest from "@app/components/PasswordResetRequest.svelte" import {loadUserData} from "@app/commands" - import {clearModals} from "@app/modal" + import {clearModals, pushModal} from "@app/modal" import {setChecked} from "@app/notifications" import {pushToast} from "@app/toast" import {NIP46_PERMS, BURROW_URL, PLATFORM_URL, PLATFORM_NAME, PLATFORM_LOGO} from "@app/state" @@ -19,9 +21,11 @@ const clientSecret = makeSecret() + const startReset = () => pushModal(PasswordResetRequest, {email}) + const abortController = new AbortController() - const relays = ["ws://" + stripProtocol(BURROW_URL)] + const relays = [normalizeRelayUrl("ws://" + stripProtocol(BURROW_URL))] const broker = Nip46Broker.get({clientSecret, relays}) @@ -30,10 +34,15 @@ const onSubmit = async () => { loading = true - const res = await postJson(BURROW_URL + "/session", {email, password, nostrconnect: url}) + try { + const res = await postJson(BURROW_URL + "/session", {email, password, nostrconnect: url}) - if (res.error) { - pushToast({message: res.error, theme: "error"}) + if (res.error) { + pushToast({message: res.error, theme: "error"}) + loading = false + } + } catch (e) { + pushToast({message: "Something went wrong, please try again!", theme: "error"}) loading = false } } @@ -91,7 +100,7 @@
Log In
-
Log in using your email and password.
+
Log in using your email and password

Email

@@ -107,9 +116,10 @@
-

+

Your email and password only work to log in to {PLATFORM_NAME}. To use your key on other nostr - applications, visit your settings page. + applications, visit your settings page.

diff --git a/src/app/components/PasswordReset.svelte b/src/app/components/PasswordReset.svelte new file mode 100644 index 0000000..c1fb406 --- /dev/null +++ b/src/app/components/PasswordReset.svelte @@ -0,0 +1,61 @@ + + + + +
Reset your password
+
+ +

Email Address

+ +
+ +

New Password

+ +
+ + diff --git a/src/app/components/PasswordResetRequest.svelte b/src/app/components/PasswordResetRequest.svelte new file mode 100644 index 0000000..9f45d54 --- /dev/null +++ b/src/app/components/PasswordResetRequest.svelte @@ -0,0 +1,62 @@ + + +
+ +
Reset your password
+
+ +

Email Address

+ +

You'll be sent an email with a password reset link.

+
+ + + + +
diff --git a/src/routes/confirm-email/+page.svelte b/src/routes/confirm-email/+page.svelte deleted file mode 100644 index 45b983b..0000000 --- a/src/routes/confirm-email/+page.svelte +++ /dev/null @@ -1 +0,0 @@ -hi