diff --git a/src/main.ts b/src/main.ts index 06244bc..6731b6c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -55,15 +55,15 @@ const toggleChecked = (checkbox: Element) => const toggleLoading = (checkbox: Element) => checkbox[classList].toggle(CLASS_LOADING); -const executeChallenge = async (challenge: Challenge, challengeCompletedCallback: (response: string) => void): Promise => { - challengeCompletedCallback(await findHashWithPrefix(challenge.algo, challenge.prefixBits, challenge.input)); +const executeChallenge = async (challenge: Challenge, challengeCompletedCallback: (response: string) => Promise): Promise => { + await challengeCompletedCallback(await findHashWithPrefix(challenge.algo, challenge.prefixBits, challenge.input)); } -const prepareSilentCaptcha = (_: Element, challengeCompletedCallback: (response: string) => void): (challenge: Challenge) => Promise => { +const prepareSilentCaptcha = (_: Element, challengeCompletedCallback: (response: string) => Promise): (challenge: Challenge) => Promise => { return async (challenge: Challenge) => await executeChallenge(challenge, challengeCompletedCallback); } -const prepareInputCaptcha = (captcha: Element, challengeCompletedCallback: (response: string) => void): (challenge: Challenge) => Promise => { +const prepareInputCaptcha = (captcha: Element, challengeCompletedCallback: (response: string) => Promise): (challenge: Challenge) => Promise => { const checkbox = initCaptchaContentAndGetCheckbox(captcha); return async (challenge: Challenge) => { @@ -83,7 +83,7 @@ const prepareInputCaptcha = (captcha: Element, challengeCompletedCallback: (resp } } -const prepareCaptcha = async (captcha: Element) => { +const prepareCaptcha = async (captcha: Element, staticSuccessCallback?: (response: string) => Promise) => { const challengeUrl = captcha[getAttribute](DATA_CHALLENGE_URL); const successCallback = captcha[getAttribute](DATA_SUCCESS_CALLBACK); const inputSelector = captcha[getAttribute](DATA_INPUT_SELECTOR); @@ -92,8 +92,9 @@ const prepareCaptcha = async (captcha: Element) => { if (inputSelector) [..._document[querySelectorAll](inputSelector)].forEach((input: HTMLInputElement) => input.value = response) } - const challengeCompletesCallback = (response: string) => { - if (successCallback) [eval][0](successCallback)(response); + const challengeCompletesCallback = async (response: string) => { + if (staticSuccessCallback) await staticSuccessCallback(response); + else if (successCallback) [eval][0](successCallback)(response); setInputValue(response); }; @@ -129,4 +130,4 @@ declare global { } } -window.prepareCaptcha = prepareCaptcha; \ No newline at end of file +window.prepareCaptcha = prepareCaptcha;