import QrScannerModal from '@/components/QrScannerModal' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' import { useNostr } from '@/providers/NostrProvider' import { useState } from 'react' import { useTranslation } from 'react-i18next' import { ScanLine } from 'lucide-react' export default function PrivateKeyLogin({ back, onLoginSuccess }: { back: () => void onLoginSuccess: () => void }) { return ( nsec ncryptsec ) } function NsecLogin({ back, onLoginSuccess }: { back: () => void; onLoginSuccess: () => void }) { const { t } = useTranslation() const { nsecLogin } = useNostr() const [nsecOrHex, setNsecOrHex] = useState('') const [errMsg, setErrMsg] = useState(null) const [password, setPassword] = useState('') const [showScanner, setShowScanner] = useState(false) const handleInputChange = (e: React.ChangeEvent) => { setNsecOrHex(e.target.value) setErrMsg(null) } const handleScan = (result: string) => { setNsecOrHex(result) setErrMsg(null) } const handleLogin = () => { if (nsecOrHex === '') return nsecLogin(nsecOrHex, password) .then(() => onLoginSuccess()) .catch((err) => { setErrMsg(err.message) }) } return ( <> {showScanner && ( setShowScanner(false)} /> )}
{ e.preventDefault() handleLogin() }} >
{t( 'Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.' )}
{errMsg &&
{errMsg}
}
setPassword(e.target.value)} />
) } function NcryptsecLogin({ back, onLoginSuccess }: { back: () => void onLoginSuccess: () => void }) { const { t } = useTranslation() const { ncryptsecLogin } = useNostr() const [ncryptsec, setNcryptsec] = useState('') const [errMsg, setErrMsg] = useState(null) const [showScanner, setShowScanner] = useState(false) const handleInputChange = (e: React.ChangeEvent) => { setNcryptsec(e.target.value) setErrMsg(null) } const handleScan = (result: string) => { setNcryptsec(result) setErrMsg(null) } const handleLogin = () => { if (ncryptsec === '') return ncryptsecLogin(ncryptsec) .then(() => onLoginSuccess()) .catch((err) => { setErrMsg(err.message) }) } return ( <> {showScanner && ( setShowScanner(false)} /> )}
{ e.preventDefault() handleLogin() }} >
{errMsg &&
{errMsg}
}
) }