add direct success callback

This commit is contained in:
overflowerror 2024-08-16 23:14:58 +02:00
parent c32124b3fc
commit 7c5a5e494c
2 changed files with 8 additions and 7 deletions

View file

@ -5,6 +5,6 @@
<link href="bundle.css" rel="stylesheet">
</head>
<body>
<div class="captcha" data-challenge-url="/challenge.json"></div>
<div class="captcha" data-challenge-url="/challenge.json" data-success-callback="console.log"></div>
</body>
</html>

View file

@ -37,14 +37,11 @@ const toggleChecked = (checkbox: Element) =>
const toggleLoading = (checkbox: Element) =>
checkbox.classList.toggle(CLASS_LOADING);
function prepareChallengeExecution(challenge: Challenge): () => Promise<void> {
function prepareChallengeExecution(challenge: Challenge, callback: (response: string) => void): () => Promise<void> {
return async function() {
console.log("Calculating...");
toggleLoading(this);
const response = await findHashWithPrefix(challenge.algo, challenge.prefixBits, challenge.input);
console.log("Challenge Response: " + response);
callback(await findHashWithPrefix(challenge.algo, challenge.prefixBits, challenge.input));
toggleLoading(this);
toggleChecked(this);
@ -57,6 +54,8 @@ const prepareCaptcha = async (captcha: Element) => {
throw "No challenge URL found.";
}
let successCallback = captcha.getAttribute("data-success-callback");
const checkbox = initCaptchaContentAndGetCheckbox(captcha);
const challengeResponse = await fetch(challengeUrl);
@ -68,7 +67,9 @@ const prepareCaptcha = async (captcha: Element) => {
toggleLoading(checkbox);
checkbox.addEventListener("click", prepareChallengeExecution(challenge));
checkbox.addEventListener("click", prepareChallengeExecution(challenge, response => {
if (successCallback) eval(successCallback)(response);
}));
}
window.addEventListener("load", () =>