refactor(js): add 'debounced-empty' when there are no more debouncing call
This commit is contained in:
parent
f4f40ded6c
commit
5cadb70d3a
2 changed files with 27 additions and 1 deletions
|
@ -7,9 +7,20 @@ export class ApplicationController extends Controller {
|
||||||
#debounced = new Map<() => void, () => void>();
|
#debounced = new Map<() => void, () => void>();
|
||||||
|
|
||||||
protected debounce(fn: () => void, interval: number): void {
|
protected debounce(fn: () => void, interval: number): void {
|
||||||
|
this.globalDispatch('debounced:added');
|
||||||
|
|
||||||
let debounced = this.#debounced.get(fn);
|
let debounced = this.#debounced.get(fn);
|
||||||
if (!debounced) {
|
if (!debounced) {
|
||||||
debounced = debounce(fn.bind(this), interval);
|
let wrapper = () => {
|
||||||
|
fn.bind(this)();
|
||||||
|
this.#debounced.delete(fn);
|
||||||
|
if (this.#debounced.size == 0) {
|
||||||
|
this.globalDispatch('debounced:empty');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
debounced = debounce(wrapper.bind(this), interval);
|
||||||
|
|
||||||
this.#debounced.set(fn, debounced);
|
this.#debounced.set(fn, debounced);
|
||||||
}
|
}
|
||||||
debounced();
|
debounced();
|
||||||
|
|
|
@ -32,6 +32,21 @@ export class AutosaveStatusController extends ApplicationController {
|
||||||
this.onGlobal<CustomEvent>('autosave:error', (event) =>
|
this.onGlobal<CustomEvent>('autosave:error', (event) =>
|
||||||
this.didFail(event)
|
this.didFail(event)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
this.onGlobal('debounced:added', () => this.debouncedAdded());
|
||||||
|
this.onGlobal('debounced:empty', () => this.debouncedEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
private debouncedAdded() {
|
||||||
|
const autosave = this.element as HTMLDivElement;
|
||||||
|
removeClass(autosave, 'debounced-empty');
|
||||||
|
addClass(autosave, 'debounced-added');
|
||||||
|
}
|
||||||
|
|
||||||
|
private debouncedEmpty() {
|
||||||
|
const autosave = this.element as HTMLDivElement;
|
||||||
|
addClass(autosave, 'debounced-empty');
|
||||||
|
removeClass(autosave, 'debounced-added');
|
||||||
}
|
}
|
||||||
|
|
||||||
onClickRetryButton() {
|
onClickRetryButton() {
|
||||||
|
|
Loading…
Reference in a new issue