diff options
Diffstat (limited to 'frontend/site/audio')
| -rw-r--r-- | frontend/site/audio/audio.player.js | 31 | ||||
| -rw-r--r-- | frontend/site/audio/audio.reducer.js | 18 |
2 files changed, 45 insertions, 4 deletions
diff --git a/frontend/site/audio/audio.player.js b/frontend/site/audio/audio.player.js index 9a2d783..acf2f52 100644 --- a/frontend/site/audio/audio.player.js +++ b/frontend/site/audio/audio.player.js @@ -1,13 +1,36 @@ export default class AudioPlayer { + files = {} players = {} - play({ item, restart, loop }) { + load(graph) { + this.files = graph.uploads + .filter(upload => upload.tag === 'audio') + .reduce((accumulator, item) => { + accumulator[item.id] = item + return accumulator + }, {}) + console.log(this.files) + } + + playPage(page) { + console.log(page.settings) + const { background_audio_id, restart_audio } = page.settings + if (background_audio_id in this.files) { + this.playFile({ + item: this.files[background_audio_id], + restart: !!restart_audio, + }) + } + } + + playFile({ item, restart, loop }) { return new Promise((resolve, reject) => { const { id, url } = item - if (id in players) { + console.log('play >>', id, url) + if (id in this.players) { if (restart) { - players[id].currentTime = 0 - players[id].play() + this.players[id].currentTime = 0 + this.players[id].play() return resolve() } return reject() diff --git a/frontend/site/audio/audio.reducer.js b/frontend/site/audio/audio.reducer.js new file mode 100644 index 0000000..f0bf0e9 --- /dev/null +++ b/frontend/site/audio/audio.reducer.js @@ -0,0 +1,18 @@ +import AudioPlayer from 'site/audio/audio.player' +import * as types from 'site/types' + +const initialState = { + player: new AudioPlayer(), +} + +export default function audioReducer(state = initialState, action) { + // console.log(action.type, action) + switch (action.type) { + case types.site.loaded: + state.player.load(action.data.graph) + return state + + default: + return state + } +} |
