mattermost-redux
Version:
Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client
34 lines (25 loc) • 717 B
text/typescript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
export default class DelayedAction<F extends (...args: any) => any> {
action: F;
timer: NodeJS.Timeout | null;
constructor(action: F) {
this.action = action;
this.timer = null;
}
fire = (): void => {
this.action();
this.timer = null;
}
fireAfter = (timeout: number): void => {
if (this.timer !== null) {
clearTimeout(this.timer);
}
this.timer = setTimeout(this.fire, timeout);
}
cancel = (): void => {
if (this.timer !== null) {
clearTimeout(this.timer);
}
}
}