import { MEDIA_OPEN, MODAL_CLOSE, MODAL_INDEX_DECREASE, MODAL_INDEX_INCREASE } from '../actions/modal'; import Immutable from 'immutable'; const initialState = Immutable.Map({ media: null, index: 0, open: false }); export default function modal(state = initialState, action) { switch(action.type) { case MEDIA_OPEN: return state.withMutations(map => { map.set('media', action.media); map.set('index', action.index); map.set('open', true); }); case MODAL_CLOSE: return state.set('open', false); case MODAL_INDEX_DECREASE: return state.update('index', index => (index - 1) % state.get('media').size); case MODAL_INDEX_INCREASE: return state.update('index', index => (index + 1) % state.get('media').size); default: return state; } };