import Ember from 'ember'; import config from 'travis/config/environment'; export default Ember.Service.extend({ pollingInterval: 30000, ajaxPolling: true, init() { var interval; this._super(...arguments); this.set('watchedModels', []); this.set('sources', []); interval = setInterval(() => { if (config.ajaxPolling) { this.poll(); } }, this.get('pollingInterval')); this.set('interval', interval); }, willDestroy() { var interval; this._super.apply(this, arguments); if (interval = this.get('interval')) { return clearInterval(interval); } }, startPollingHook(source) { var sources; sources = this.get('sources'); if (!sources.contains(source)) { return sources.pushObject(source); } }, stopPollingHook(source) { var sources; sources = this.get('sources'); return sources.removeObject(source); }, startPolling(model) { var watchedModels; watchedModels = this.get('watchedModels'); if (!watchedModels.contains(model)) { return watchedModels.pushObject(model); } }, stopPolling(model) { var watchedModels; watchedModels = this.get('watchedModels'); return watchedModels.removeObject(model); }, poll() { this.get('watchedModels').forEach(function(model) { return model.reload(); }); return this.get('sources').forEach( (source) => { if (Ember.get(source, 'isDestroyed')) { return this.get('sources').removeObject(source); } else { return source.pollHook(); } }); } });