From 2f1bd9ca611d63914a53653e6deefd84c3366a6c Mon Sep 17 00:00:00 2001 From: Afrie Irham Date: Wed, 5 Jul 2023 18:32:03 +0800 Subject: [PATCH 1/4] fix: enable user to press Enter in signup flow --- frontend/src/components/signup/CodeInputStep.tsx | 1 + frontend/src/components/signup/EnterEmailStep.tsx | 1 + frontend/src/components/signup/UserInfoStep.tsx | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/signup/CodeInputStep.tsx b/frontend/src/components/signup/CodeInputStep.tsx index dd765c1fc..7f6c75871 100644 --- a/frontend/src/components/signup/CodeInputStep.tsx +++ b/frontend/src/components/signup/CodeInputStep.tsx @@ -114,6 +114,7 @@ export default function CodeInputStep({
@@ -301,6 +300,7 @@ export default function UserInfoStep({
-
+ } From 93e0232c21000f7ba912caf99c848e7f1fb66367 Mon Sep 17 00:00:00 2001 From: Afrie Irham Date: Wed, 5 Jul 2023 19:02:48 +0800 Subject: [PATCH 3/4] fix: allow user to press Enter in forgot password page --- frontend/src/pages/verify-email.tsx | 31 ++++++++++++++++------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/frontend/src/pages/verify-email.tsx b/frontend/src/pages/verify-email.tsx index 33640dbc1..605c71da8 100644 --- a/frontend/src/pages/verify-email.tsx +++ b/frontend/src/pages/verify-email.tsx @@ -1,4 +1,4 @@ -import { useState } from "react"; +import { FormEvent, useState } from "react"; import Head from "next/head"; import Image from "next/image"; import Link from "next/link"; @@ -12,6 +12,7 @@ import { useFetchServerStatus } from "@app/hooks/api/serverDetails"; import SendEmailOnPasswordReset from "./api/auth/SendEmailOnPasswordReset"; export default function VerifyEmail() { + const [loading, setLoading] = useState(false); const [email, setEmail] = useState(""); const [step, setStep] = useState(1); const { data: serverDetails } = useFetchServerStatus(); @@ -27,6 +28,18 @@ export default function VerifyEmail() { } }; + const onSubmit = (e: FormEvent) => { + e.preventDefault(); + setLoading(true); + + if (serverDetails?.emailConfigured) { + sendVerificationEmail(); + } else { + handlePopUpOpen("setUpEmail"); + setLoading(false); + } + }; + return (
@@ -45,7 +58,7 @@ export default function VerifyEmail() {
{step === 1 && ( -
+

Forgot your password?

@@ -67,20 +80,10 @@ export default function VerifyEmail() {
-
-
+ )} {step === 2 && (
From 7020c7aeabf30c1e38dfb441866ab0e50d48d5f8 Mon Sep 17 00:00:00 2001 From: Afrie Irham Date: Sun, 9 Jul 2023 15:08:25 +0800 Subject: [PATCH 4/4] fix: completing allow user to press Enter in forgot password flow --- frontend/src/pages/password-reset.tsx | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/frontend/src/pages/password-reset.tsx b/frontend/src/pages/password-reset.tsx index 4ce6d4004..30efc2c3b 100644 --- a/frontend/src/pages/password-reset.tsx +++ b/frontend/src/pages/password-reset.tsx @@ -1,6 +1,6 @@ import crypto from "crypto"; -import { useState } from "react"; +import { FormEvent, useState } from "react"; import Image from "next/image"; import { useRouter } from "next/router"; import { faCheck, faX } from "@fortawesome/free-solid-svg-icons"; @@ -24,6 +24,7 @@ const client = new jsrp.client(); export default function PasswordReset() { const [verificationToken, setVerificationToken] = useState(""); const [step, setStep] = useState(1); + const [loading, setLoading] = useState(false); const [backupKey, setBackupKey] = useState(""); const [privateKey, setPrivateKey] = useState(""); const [newPassword, setNewPassword] = useState(""); @@ -38,7 +39,8 @@ export default function PasswordReset() { const email = (parsedUrl.to as string)?.replace(" ", "+").trim(); // Unencrypt the private key with a backup key - const getEncryptedKeyHandler = async () => { + const getEncryptedKeyHandler = async (e: FormEvent) => { + e.preventDefault(); try { const result = await getBackupEncryptedPrivateKey({ verificationToken }); @@ -57,7 +59,8 @@ export default function PasswordReset() { }; // If everything is correct, reset the password - const resetPasswordHandler = async () => { + const resetPasswordHandler = async (e: FormEvent) => { + e.preventDefault(); const errorCheck = passwordCheck({ password: newPassword, setPasswordErrorLength, @@ -125,6 +128,7 @@ export default function PasswordReset() { if (response?.status === 200) { router.push("/login"); } + setLoading(false) }); } ); @@ -162,7 +166,7 @@ export default function PasswordReset() { // Input backup key const stepInputBackupKey = ( -
+

Enter your backup key

@@ -186,18 +190,19 @@ export default function PasswordReset() {
-
+ ); // Enter new password const stepEnterNewPassword = ( -
+

Enter new password

@@ -269,13 +274,15 @@ export default function PasswordReset() {
-
+ ); return (