diff --git a/homepage/static/assets/js/captcha_refresh.js b/homepage/static/assets/js/captcha_refresh.js new file mode 100644 index 0000000..76a6615 --- /dev/null +++ b/homepage/static/assets/js/captcha_refresh.js @@ -0,0 +1,30 @@ +const captcha_span = document.getElementsByClassName("captcha")[0]; +const captcha_img = captcha_span.children[1]; + +captcha_span.children[3].innerHTML + = `ed in 600 seconds.`; + +const captcha_refresh = document.getElementById("refresh"); +const captcha_remain = document.getElementById("remain"); + +const g_captcha_timeout_seconds = 600; +let g_captcha_timeout_remain = g_captcha_timeout_seconds; + +async function newCaptcha() { + const id = await fetch("/captcha/").then(r => r.text()); + setTimeout(() => { captcha_img.src = `/captcha/${id}/image` }, 400); + g_captcha_timeout_remain = g_captcha_timeout_seconds; +} + +captcha_span.classList.toggle("refresh"); +captcha_refresh.classList.toggle("refresh"); +captcha_refresh.addEventListener("click", async e => { + e.preventDefault(); + await newCaptcha(); +}); + +setInterval(async () => { + captcha_remain.innerText = g_captcha_timeout_remain--; + if (g_captcha_timeout_remain == 0) + await newCaptcha(); +}, 1000); \ No newline at end of file