rateLimitedExecute method
Implementation
void rateLimitedExecute(VoidCallback? callback, {Duration? cooldown}) {
if (callback == null) return;
final now = DateTime.now();
if (_lastExecutionTime != null) {
final elapsed = now.difference(_lastExecutionTime!);
final effectiveCooldown =
cooldown ?? ButtonSecurityConfig.defaultCooldownDuration;
if (elapsed < effectiveCooldown) {
_logSecurity('Button press blocked: cooldown active');
return;
}
}
// Check rate limit
if (isRateLimited) {
_logSecurity('Button press blocked: rate limit exceeded');
return;
}
_lastExecutionTime = now;
_executionCount++;
safeExecute(callback);
}