fix: clear password form after async update

This commit is contained in:
flym 2026-09-09 00:20:11 +08:00
parent 4b3e82568a
commit 789086830b

View File

@ -39,12 +39,13 @@ export function AccountPanel() {
async function changePassword(event: FormEvent<HTMLFormElement>) { async function changePassword(event: FormEvent<HTMLFormElement>) {
event.preventDefault(); event.preventDefault();
const form = event.currentTarget;
setPasswordMessage(""); setPasswordMessage("");
const data = new FormData(event.currentTarget); const data = new FormData(form);
const response = await fetch(`${apiBase}/auth/password/change`, { method: "POST", credentials: "include", headers: { "Content-Type": "application/json", "X-CSRF-Token": csrf }, body: JSON.stringify({ current_password: data.get("current_password"), new_password: data.get("new_password") }) }); const response = await fetch(`${apiBase}/auth/password/change`, { method: "POST", credentials: "include", headers: { "Content-Type": "application/json", "X-CSRF-Token": csrf }, body: JSON.stringify({ current_password: data.get("current_password"), new_password: data.get("new_password") }) });
const body = await response.json().catch(() => ({})); const body = await response.json().catch(() => ({}));
if (!response.ok) setPasswordMessage(body.error?.message ?? "密码修改失败"); if (!response.ok) setPasswordMessage(body.error?.message ?? "密码修改失败");
else { setPasswordMessage("密码已修改,其他会话已撤销"); event.currentTarget.reset(); } else { setPasswordMessage("密码已修改,其他会话已撤销"); form.reset(); }
} }
if (error) return <div className="mt-8"><PreviewNotice>{error}<Link className="text-cyan underline" href="/login"></Link></PreviewNotice></div>; if (error) return <div className="mt-8"><PreviewNotice>{error}<Link className="text-cyan underline" href="/login"></Link></PreviewNotice></div>;