diff --git a/homepage/static/assets/js/captcha_refresh.js b/homepage/static/assets/js/captcha_refresh.js index 4f7cc6c..c937113 100644 --- a/homepage/static/assets/js/captcha_refresh.js +++ b/homepage/static/assets/js/captcha_refresh.js @@ -1,27 +1,20 @@ const g_captcha_timeout_seconds = 600; -const captcha_hidden_field = document.forms[0].children[4].children[0]; +const e_captcha = document.getElementsByClassName("captcha")[0]; let g_captcha_timeout_remain = g_captcha_timeout_seconds; -let g_current_captcha_id = captcha_hidden_field.value; - -function getColorScheme() { - return window.matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark"; -} +let g_current_captcha_id = e_captcha.children[0].value; async function getNewCaptcha() { const id = await fetch("/api/captcha/", { method: "POST"}).then(r => r.text()); - g_current_captcha_id = id; - captcha_hidden_field.value = id; - setTimeout(() => { captcha_img.src = `/api/captcha/${id}/image?style=${getColorScheme()}` }, 600); + g_current_captcha_id = e_captcha.children[0].value = id; + const style = window.matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark"; + setTimeout(() => { e_captcha.children[1].src = `/api/captcha/${id}/image?style=${style}` }, 600); g_captcha_timeout_remain = g_captcha_timeout_seconds; } -const captcha_span = document.getElementsByClassName("captcha")[0]; -const captcha_img = captcha_span.children[1]; - -captcha_span.classList.toggle("refresh"); -captcha_span.children[3].innerHTML = +e_captcha.classList.toggle("refresh"); +e_captcha.children[3].innerHTML = `ed in 600 seconds.`; const captcha_refresh = document.getElementById("refresh"); @@ -30,11 +23,11 @@ const captcha_remain = document.getElementById("remain"); captcha_refresh.classList.toggle("refresh"); captcha_refresh.addEventListener("click", async e => { e.preventDefault(); - captcha_refresh.disabled = true; + e.target.disabled = true; setTimeout(async () => { - captcha_refresh.disabled = false; + e.target.disabled = false; await fetch(`/api/captcha/${g_current_captcha_id}?remove`); }, 3000); - document.getElementsByName("captcha_answer")[0].value = ""; + e_captcha.children[2].value = ""; await getNewCaptcha(); });