import { FormEvent, useState } from 'react' import { api } from './api' import { Spinner } from './ui' const USER_KEY = 'hamlab.user' // the last account signed in on this device, offered again export default function Login({ onLogin }: { onLogin: () => void }) { const [user, setUser] = useState(localStorage.getItem(USER_KEY) ?? '') const [pw, setPw] = useState('') const [err, setErr] = useState('') const [busy, setBusy] = useState(false) async function submit(e: FormEvent) { e.preventDefault() setBusy(true); setErr('') try { const r = await api.login(user.trim(), pw) localStorage.setItem(USER_KEY, r?.user ?? user.trim()) onLogin() } catch (e) { setErr((e instanceof Error && e.message) || 'login failed'); setBusy(false) } } return (
Ham Lab setUser(e.target.value)} disabled={busy} /> setPw(e.target.value)} disabled={busy} /> {err &&
{err}
}
) }