import types from '../types' import * as util from '../util' import moment from 'moment' const queueInitialState = { loading: false, error: null, tasks: {}, queue: [], completed: [], } const dateSort = util.sort.orderByFn('date desc') const prioritySort = util.sort.orderByFn('priority asc') const queueReducer = (state = queueInitialState, action) => { switch(action.type) { case types.task.create: return { ...state, tasks: { ...state.tasks, [action.data.id]: action.data, }, queue: state.queue.concat([action.data]), } case types.task.index: console.log(action.data) return { ...state, tasks: action.data.reduce((a,b) => (a[b.id] = b, a), {}), queue: action.data .filter(a => !a.completed) .map(dateSort.mapFn) .sort(dateSort.sortFn) .map(pair => pair[1].id), completed: action.data .filter(a => a.completed) .map(prioritySort.mapFn) .sort(prioritySort.sortFn) .map(pair => pair[1].id), } default: return state } } export default queueReducer