anoncaptcha v0.92 - timeout fix

This commit is contained in:
2026-07-19 20:18:38 +03:00
parent ad849da914
commit 1f4730ebd9
2 changed files with 15 additions and 9 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ AnonCaptcha Addon
Adds a math-based captcha for anonymous commenters to prevent spam.
When enabled, anonymous visitors who wish to leave a comment must solve a simple addition problem (e.g. "What is 12 + 37?").
When enabled, anonymous visitors who wish to leave a comment must solve a simple addition problem.
Based on Zotlabs hook system.
+10 -4
View File
@@ -2,7 +2,7 @@
/**
* Name: AnonCaptcha
* Description: Adds a math captcha for anonymous commenters to prevent spam
* Version: 0.91
* Version: 0.92
* Author: ivan zlax <@zlax@ussr.win>
* Maintainer: ivan zlax <@zlax@ussr.win>
*/
@@ -218,12 +218,18 @@ if(typeof jQuery!=='undefined'){
jQuery(document).ajaxComplete(function(event, xhr, settings){
if(settings && settings.url && settings.url.indexOf('item')!==-1){
dc('ajaxComplete for item request, url='+settings.url);
dc('responseStatus='+xhr.status+' responseLength='+xhr.responseText.length);
try{
if(xhr.responseText){
var resp = JSON.parse(xhr.responseText);
dc('response parsed, captcha_fail='+resp.captcha_fail);
if(resp && resp.captcha_fail){
alert(resp.error_msg || 'Captcha failed');
}
} else {
dc('empty response from server');
dc('check if anoncaptcha_token is in form data');
}
}catch(e){
dc('error parsing response: '+e.message);
}
@@ -280,17 +286,17 @@ function addC(){
}
// Try immediately
addC();
// If no elements found, retry up to 25 times with 400ms delay (10 seconds total)
// If no elements found, retry up to 30 times with 300ms delay (9 seconds total)
// Hubzilla loads comment forms via AJAX after initial page load
if(document.querySelectorAll('[id^="comment-edit-anon"]').length===0){
var retries=0;
var retry=setInterval(function(){
retries++;
addC();
if(retries>=25 || document.querySelectorAll('[id^="comment-edit-anon"]').length>0){
if(retries>=30 || document.querySelectorAll('[id^="comment-edit-anon"]').length>0){
clearInterval(retry);
}
},400);
},300);
}
// Observe for dynamically added comment forms
if(typeof MutationObserver!=="undefined"){