import { combineReducers } from 'redux' const liveInitialState = { loading: false, error: null, opt: {}, checkpoints: [], checkpoint_dir: ['latest'], sequences: [], fps: 0, frame: { i: 0, sequence_i: 0, sequence_len: '1' } } const liveReducer = (state = liveInitialState, action) => { let results; switch(action.type) { case 'LOAD_PARAMS': if (! action.opt || ! Object.keys(action.opt).length) { return state } return { ...state, loading: false, error: null, opt: action.opt, } case 'SET_PARAM': return { ...state, opt: { ...state.opt, [action.key]: action.value, } } case 'LIST_CHECKPOINTS': return { ...state, checkpoints: action.checkpoints, epochs: [], } case 'LIST_EPOCHS': return { ...state, epochs: (action.epochs || []).map(a => [ a == 'latest' ? Infinity : a, a ]) .sort((a,b) => a[0] - b[0]) .map(a => a[1]) } case 'LIST_SEQUENCES': return { ...state, sequences: action.sequences, } case 'SET_FPS': return { ...state, fps: action.fps, } case 'CURRENT_FRAME': return action.meta ? { ...state, frame: action.meta } : state default: return state } } export default liveReducer