Files
gridpilot.gg/apps/website/lib/blockers/ThrottleBlocker.ts
2025-12-18 14:26:17 +01:00

24 lines
544 B
TypeScript

import { Blocker } from './Blocker';
/**
* ThrottleBlocker enforces a minimum time delay between executions.
*
* Useful for preventing rapid successive actions, such as button mashing.
*/
export class ThrottleBlocker extends Blocker {
private lastExecutionTime = 0;
constructor(private readonly delayMs: number) {}
canExecute(): boolean {
return Date.now() - this.lastExecutionTime >= this.delayMs;
}
block(): void {
this.lastExecutionTime = Date.now();
}
release(): void {
// No-op for throttle blocker
}
}