diff --git a/packages/app/src/Pages/onboarding/start.tsx b/packages/app/src/Pages/onboarding/start.tsx index 7ab824d5..b721ba3d 100644 --- a/packages/app/src/Pages/onboarding/start.tsx +++ b/packages/app/src/Pages/onboarding/start.tsx @@ -12,6 +12,8 @@ import { NotEncrypted } from "@snort/system"; import classNames from "classnames"; import { trackEvent } from "@/SnortUtils"; +const NSEC_NPUB_REGEX = /(nsec1|npub1)[a-zA-Z0-9]{20,65}/gi; + export function SignIn() { const navigate = useNavigate(); const { formatMessage } = useIntl(); @@ -30,7 +32,12 @@ export function SignIn() { navigate("/"); } - async function doLogin() { + async function onSubmit(e) { + e.preventDefault(); + doLogin(key); + } + + async function doLogin(key: string) { setError(""); try { await loginHandler.doLogin(key, key => Promise.resolve(new NotEncrypted(key))); @@ -52,6 +59,15 @@ export function SignIn() { } } + const onChange = (e: React.ChangeEvent) => { + const val = e.target.value; + if (val.match(NSEC_NPUB_REGEX)) { + doLogin(val); + } else { + setKey(val); + } + }; + const nip7Login = hasNip7 && !useKey; return (
@@ -80,7 +96,7 @@ export function SignIn() { )} {(!hasNip7 || useKey) && ( - <> +
setKey(e.target.value)} + onChange={onChange} // TODO should log in directly if nsec or npub is pasted className="new-username" /> {error && {error}} - - - - +
+ + + +
+
)}
- + + + navigate("/login/sign-up")}> @@ -113,6 +133,23 @@ export function SignUp() { const navigate = useNavigate(); const [name, setName] = useState(""); + const onSubmit = () => { + navigate("/login/sign-up/profile", { + state: { + name: name, + } as NewUserState, + }); + }; + + const onChange = (e: React.ChangeEvent) => { + const val = e.target.value; + if (val.match(NSEC_NPUB_REGEX)) { + e.preventDefault(); + } else { + setName(val); + } + }; + return (
@@ -122,7 +159,7 @@ export function SignUp() {
-
+
setName(e.target.value)} + onChange={onChange} className="new-username" /> - - navigate("/login/sign-up/profile", { - state: { - name: name, - } as NewUserState, - }) - }> + -
+
- + + + navigate("/login")}>