import App from 'public/app'; import Model, {Set} from 'public/model'; import Sound from 'public/sound'; import {setEcoInterval} from 'public/utils'; import {Streamer, Queue} from './controllers'; window.aircox.builder.config = { ...App, data() { return { // current streamer streamer: null, // all streamers streamers: [], // fetch interval id fetchInterval: null, Sound: Sound, } }, computed: { ...(App.computed || {}), apiUrl() { return this.$el && this.$el.dataset.apiUrl; }, sources() { var sources = this.streamer ? this.streamer.sources : []; return sources.filter(s => s.data) }, }, methods: { ...(App.methods || {}), fetchStreamers() { Set.fetch(Streamer, this.apiUrl).then(streamers => { this.streamers = streamers this.streamer = streamers ? streamers[0] : null }) }, }, mounted() { this.fetchStreamers(); this.fetchInterval = setEcoInterval(() => this.streamer && this.streamer.fetch(), 5000) }, destroyed() { if(this.fetchInterval !== null) clearInterval(this.fetchInterval) } }