Permalink
Cannot retrieve contributors at this time
Fetching contributors…

import { handleActions } from 'redux-actions'; | |
import types from './types'; | |
import { findNextHike } from './utils'; | |
const initialState = { | |
hikes: { | |
results: [], | |
entities: {} | |
}, | |
// lecture state | |
currentHike: '', | |
showQuestions: false | |
}; | |
export default handleActions( | |
{ | |
[types.toggleQuestion]: state => ({ | |
...state, | |
showQuestions: !state.showQuestions, | |
currentQuestion: 1 | |
}), | |
[types.grabQuestion]: (state, { payload: { delta, mouse } }) => ({ | |
...state, | |
isPressed: true, | |
delta, | |
mouse | |
}), | |
[types.releaseQuestion]: state => ({ | |
...state, | |
isPressed: false, | |
mouse: [ 0, 0 ] | |
}), | |
[types.moveQuestion]: (state, { payload: mouse }) => ({ ...state, mouse }), | |
[types.resetHike]: state => ({ | |
...state, | |
currentQuestion: 1, | |
showQuestions: false, | |
mouse: [0, 0], | |
delta: [0, 0] | |
}), | |
[types.startShake]: state => ({ ...state, shake: true }), | |
[types.endShake]: state => ({ ...state, shake: false }), | |
[types.primeNextQuestion]: (state, { payload: userAnswer }) => ({ | |
...state, | |
currentQuestion: state.currentQuestion + 1, | |
mouse: [ userAnswer ? 1000 : -1000, 0], | |
isPressed: false | |
}), | |
[types.goToNextQuestion]: state => ({ | |
...state, | |
mouse: [ 0, 0 ] | |
}), | |
[types.hikeCompleted]: (state, { payload: userAnswer } ) => ({ | |
...state, | |
isCorrect: true, | |
isPressed: false, | |
delta: [ 0, 0 ], | |
mouse: [ userAnswer ? 1000 : -1000, 0] | |
}), | |
[types.goToNextHike]: state => ({ | |
...state, | |
currentHike: findNextHike(state.hikes, state.currentHike.id), | |
showQuestions: false, | |
currentQuestion: 1, | |
mouse: [ 0, 0 ] | |
}), | |
[types.fetchHikesCompleted]: (state, { payload }) => { | |
const { hikes, currentHike } = payload; | |
return { | |
...state, | |
hikes, | |
currentHike | |
}; | |
} | |
}, | |
initialState | |
); |