import * as types from 'app/types' import { store, history, dispatch } from 'app/store' import { URLS } from 'app/constants' const audioPlayer = document.createElement('audio') // audioPlayer.volume = 0.0 audioPlayer.addEventListener('play', () => { dispatch({ type: types.audio.play }) }) audioPlayer.addEventListener('pause', () => { dispatch({ type: types.audio.pause }) }) audioPlayer.addEventListener('timeupdate', () => { dispatch({ type: types.audio.update_time, play_ts: audioPlayer.currentTime }) }) export const load = () => dispatch => { return new Promise((resolve, reject) => { audioPlayer.addEventListener('loadedmetadata', () => { // console.log('audio duration:', audioPlayer.duration) dispatch({ type: types.align.set_display_setting, key: 'duration', value: audioPlayer.duration }) resolve() }) audioPlayer.src = URLS.audio }) } export const play = () => dispatch => { dispatch({ type: types.audio.play }) audioPlayer.play() } export const pause = () => dispatch => { dispatch({ type: types.audio.pause }) audioPlayer.pause() } export const seek = play_ts => dispatch => { audioPlayer.currentTime = play_ts dispatch({ type: types.audio.seek, seek_ts: audioPlayer.currentTime }) } export const jump = delta_ts => dispatch => { audioPlayer.currentTime += delta_ts dispatch({ type: types.audio.seek, seek_ts: audioPlayer.currentTime }) } export const toggle = () => dispatch => { if (store.getState().audio.playing) { pause()(dispatch) } else { play()(dispatch) } } export const setVolume = volume => dispatch => { audioPlayer.volume = volume dispatch({ type: types.audio.set_volume, volume }) } export const setCC = value => dispatch => { dispatch({ type: types.audio.set_cc, value }) }