rateLimitedExecute method

void rateLimitedExecute(
  1. VoidCallback? callback, {
  2. Duration? cooldown,
})

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);
}