import { logout, updateUser } from "api/api"; import { useState } from "react"; import { AsyncButton } from "../AsyncButton"; import { useAppContext } from "~/providers/AppProvider"; export default function Account() { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [confirmPw, setConfirmPw] = useState(""); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const [success, setSuccess] = useState(""); const { user, setUsername: setCtxUsername } = useAppContext(); const logoutHandler = () => { setLoading(true); logout() .then((r) => { if (r.ok) { window.location.reload(); } else { r.json().then((r) => setError(r.error)); } }) .catch((err) => setError(err)); setLoading(false); }; const updateHandler = () => { setError(""); setSuccess(""); if (password != "" && confirmPw === "") { setError("confirm your new password before submitting"); return; } setError(""); setSuccess(""); setLoading(true); updateUser(username, password) .then((r) => { if (r.ok) { setSuccess("sucessfully updated user"); if (username != "") { setCtxUsername(username); } setUsername(""); setPassword(""); setConfirmPw(""); } else { r.json().then((r) => setError(r.error)); } }) .catch((err) => setError(err)); setLoading(false); }; return ( <>

Account

You're logged in as {user?.username}

Logout

Update User

e.preventDefault()} className="flex flex-col gap-4" >
setUsername(e.target.value)} />
Submit
e.preventDefault()} className="flex flex-col gap-4" >
setPassword(e.target.value)} /> setConfirmPw(e.target.value)} />
Submit
{success != "" &&

{success}

} {error != "" &&

{error}

}
); }