import { FdpStorage } from '@fairdatasociety/fdp-storage' import { Checkbox, InputBase, Typography } from '@material-ui/core' import { useSnackbar } from 'notistack' import { useEffect, useState } from 'react' import RegisterIcon from 'remixicon-react/AddBoxLineIcon' import LoginIcon from 'remixicon-react/LoginBoxLineIcon' import { SwarmButton } from '../../components/SwarmButton' import { Horizontal } from './Horizontal' import { Vertical } from './Vertical' interface Props { fdp: FdpStorage onSuccessfulLogin: () => void } export function FdpLogin({ fdp, onSuccessfulLogin }: Props) { const [username, setUsername] = useState('') const [password, setPassword] = useState('') const [remember, setRemember] = useState(false) const [sepolia, setSepolia] = useState('https://sepolia.drpc.org') const { enqueueSnackbar } = useSnackbar() const inputStyle = { background: 'white', padding: '2px 8px', width: '100%' } useEffect(() => { const storedSepolia = localStorage.getItem('sepolia') if (storedSepolia) { setSepolia(storedSepolia) } const fdpCredentials = localStorage.getItem('fdpCredentials') if (fdpCredentials) { const { username, password } = JSON.parse(fdpCredentials) setUsername(username) setPassword(password) setRemember(true) } }, []) async function onLogin() { localStorage.setItem('sepolia', sepolia) if (remember) { localStorage.setItem('fdpCredentials', JSON.stringify({ username, password })) } else { localStorage.removeItem('fdpCredentials') } enqueueSnackbar('Logging in...', { variant: 'info' }) try { await fdp.account.login(username, password) enqueueSnackbar('Logged in successfully', { variant: 'success' }) onSuccessfulLogin() } catch { enqueueSnackbar('Login failed', { variant: 'error' }) } finally { setUsername('') setPassword('') setRemember(false) } } function onRegister() { window.open('https://create.fairdatasociety.org/', '_blank') } return (
Sepolia JSON RPC setSepolia(e.target.value)} style={inputStyle} /> Username setUsername(e.target.value)} style={inputStyle} /> Password setPassword(e.target.value)} style={inputStyle} type="password" /> setRemember(e.target.checked)} /> Remember me Login Registration
) }