40 lines
930 B
JavaScript
40 lines
930 B
JavaScript
import { run } from '@ember/runloop';
|
|
import Helper from '@ember/component/helper';
|
|
import Ember from 'ember';
|
|
|
|
export default Helper.extend({
|
|
disableInterval: false,
|
|
|
|
compute(value, { interval }) {
|
|
if (Ember.testing) {
|
|
// issues with flaky test, suspect it has to the do with the run loop not being cleared as intended farther down.
|
|
return;
|
|
}
|
|
if (this.disableInterval) {
|
|
return;
|
|
}
|
|
|
|
this.clearTimer();
|
|
|
|
if (interval) {
|
|
/*
|
|
* NOTE: intentionally a setTimeout so tests do not block on it
|
|
* as the run loop queue is never clear so tests will stay locked waiting
|
|
* for queue to clear.
|
|
*/
|
|
this.intervalTimer = setTimeout(() => {
|
|
run(() => this.recompute());
|
|
}, parseInt(interval, 10));
|
|
}
|
|
},
|
|
|
|
clearTimer() {
|
|
clearTimeout(this.intervalTimer);
|
|
},
|
|
|
|
destroy() {
|
|
this.clearTimer();
|
|
this._super(...arguments);
|
|
},
|
|
});
|