Replace howler.js with simple <audio />, will hopefully resolve
some weird mobile browser behaviours
This commit is contained in:
parent
a5daa806f2
commit
952bce3023
4 changed files with 33 additions and 29 deletions
22
app/assets/javascripts/components/middleware/sounds.jsx
Normal file
22
app/assets/javascripts/components/middleware/sounds.jsx
Normal file
|
@ -0,0 +1,22 @@
|
|||
const play = audio => {
|
||||
if (!audio.paused) {
|
||||
audio.pause();
|
||||
audio.fastSeek(0);
|
||||
}
|
||||
|
||||
audio.play();
|
||||
};
|
||||
|
||||
export default function soundsMiddleware() {
|
||||
const soundCache = {
|
||||
boop: new Audio(['/sounds/boop.mp3'])
|
||||
};
|
||||
|
||||
return ({ dispatch }) => next => (action) => {
|
||||
if (action.meta && action.meta.sound && soundCache[action.meta.sound]) {
|
||||
play(soundCache[action.meta.sound]);
|
||||
}
|
||||
|
||||
return next(action);
|
||||
};
|
||||
};
|
|
@ -3,21 +3,14 @@ import thunk from 'redux-thunk';
|
|||
import appReducer from '../reducers';
|
||||
import loadingBarMiddleware from '../middleware/loading_bar';
|
||||
import errorsMiddleware from '../middleware/errors';
|
||||
import soundsMiddleware from 'redux-sounds';
|
||||
import Howler from 'howler';
|
||||
import soundsMiddleware from '../middleware/sounds';
|
||||
import Immutable from 'immutable';
|
||||
|
||||
Howler.mobileAutoEnable = false;
|
||||
|
||||
const soundsData = {
|
||||
boop: '/sounds/boop.mp3'
|
||||
};
|
||||
|
||||
export default function configureStore() {
|
||||
return createStore(appReducer, compose(applyMiddleware(
|
||||
thunk,
|
||||
loadingBarMiddleware({ promiseTypeSuffixes: ['REQUEST', 'SUCCESS', 'FAIL'] }),
|
||||
errorsMiddleware(),
|
||||
soundsMiddleware(soundsData)
|
||||
soundsMiddleware()
|
||||
), window.devToolsExtension ? window.devToolsExtension() : f => f));
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue