From d7b638bff26efb6ce3846ab4fad33920632a2631 Mon Sep 17 00:00:00 2001 From: vivganes Date: Sat, 8 Apr 2023 18:54:45 +0530 Subject: [PATCH] eye icon for privacy --- packages/app/public/icons.svg | 14 ++++++++++++++ packages/app/src/Icons/Icon.tsx | 5 ++++- packages/app/src/Pages/Login.css | 7 +++++++ packages/app/src/Pages/Login.tsx | 31 +++++++++++++++++++++++++++---- 4 files changed, 52 insertions(+), 5 deletions(-) diff --git a/packages/app/public/icons.svg b/packages/app/public/icons.svg index 6ef0b3cd4..d1e4cf5f6 100644 --- a/packages/app/public/icons.svg +++ b/packages/app/public/icons.svg @@ -354,5 +354,19 @@ stroke-linejoin="round" /> + + + + + + \ No newline at end of file diff --git a/packages/app/src/Icons/Icon.tsx b/packages/app/src/Icons/Icon.tsx index 6e1ad15b5..6d9c6400e 100644 --- a/packages/app/src/Icons/Icon.tsx +++ b/packages/app/src/Icons/Icon.tsx @@ -1,7 +1,10 @@ +import { MouseEventHandler } from "react"; + type Props = { name: string; size?: number; className?: string; + onClick?: MouseEventHandler; }; const Icon = (props: Props) => { @@ -9,7 +12,7 @@ const Icon = (props: Props) => { const href = "/icons.svg#" + props.name; return ( - + ); diff --git a/packages/app/src/Pages/Login.css b/packages/app/src/Pages/Login.css index 85cf3010e..ed7131f3b 100644 --- a/packages/app/src/Pages/Login.css +++ b/packages/app/src/Pages/Login.css @@ -120,6 +120,13 @@ font-size: 16px; } +.login-container input[type="password"] { + border: none; + background-color: var(--gray-secondary); + padding: 12px 16px; + font-size: 16px; +} + .login-container h1 { color: var(--font-color); font-style: normal; diff --git a/packages/app/src/Pages/Login.tsx b/packages/app/src/Pages/Login.tsx index 83dc60b28..19962093f 100644 --- a/packages/app/src/Pages/Login.tsx +++ b/packages/app/src/Pages/Login.tsx @@ -16,6 +16,7 @@ import ZapButton from "Element/ZapButton"; import useImgProxy from "Hooks/useImgProxy"; import messages from "./messages"; +import Icon from "Icons/Icon"; interface ArtworkEntry { name: string; @@ -69,6 +70,8 @@ export default function LoginPage() { const [key, setKey] = useState(""); const [error, setError] = useState(""); const [art, setArt] = useState(); + const [isMasking, setMasking] = useState(false); + const [suggestMasking, setSuggestMasking] = useState(false); const { formatMessage } = useIntl(); const { proxy } = useImgProxy(); const hasNip7 = "nostr" in window; @@ -85,6 +88,14 @@ export default function LoginPage() { proxy(ret.link).then(a => setArt({ ...ret, link: a })); }, []); + useEffect(() => { + if (key.startsWith("nsec") || key.match(MnemonicRegex)) { + setSuggestMasking(true); + } else { + setSuggestMasking(false); + } + }, [key]); + async function doLogin() { const insecureMsg = formatMessage({ defaultMessage: @@ -263,6 +274,10 @@ export default function LoginPage() { ); } + const flipMask = function () { + setMasking(!isMasking); + }; + return (
@@ -279,17 +294,25 @@ export default function LoginPage() {
setKey(e.target.value)} /> +

- {key?.startsWith("nsec") && ( + {suggestMasking && !isMasking && ( - We noticed that you are entering a secret key starting with nsec. We are masking your input to protect - your privacy. + )}