Created
May 19, 2017 19:44
-
-
Save marcusradell/bf9baa05a66b5932b42ce7bb8c85ab24 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const initialState = { | |
isInitialState: true, | |
errors: [], | |
showUserLog: true, | |
showSystemLog: false, | |
startDate: null, | |
endDate: null, | |
// @TODO: Remove mock data | |
categories: ["category 1", "category 2"], | |
categoryFilters: {} | |
}; | |
const toggleCategoryFilterUpdater = ({ category, isActive }) => state => | |
Object.assign({}, state, { | |
categoryFilters: { ...state.categoryFilters, [category]: isActive } | |
}); | |
const toggleUserLogUpdater = isActive => state => | |
Object.assign({}, state, { showUserLog: isActive }); | |
const toggleSystemLogUpdater = isActive => state => | |
Object.assign({}, state, { showSystemLog: isActive }); | |
const setStartDateUpdater = startDate => state => | |
Object.assign({}, state, { startDate }); | |
const setEndDateUpdater = endDate => state => | |
Object.assign({}, state, { endDate }); | |
const loadedCategoriesErrorUpdater = errors => state => | |
Object.assign({}, state, { errors }); | |
const loadedCategoriesSuccessUpdater = categories => state => | |
Object.assign({}, state, { categories, isInitialState: false, errors: [] }); | |
const loadedCategoriesUpdater = result => | |
(result.errors | |
? loadedCategoriesErrorUpdater(result.errors) | |
: loadedCategoriesSuccessUpdater(result.data)); | |
const createActions = setState => { | |
const toggleCategoryFilter = ({ category, isActive }) => | |
setState(toggleCategoryFilterUpdater({ category, isActive })); | |
const loadCategories = getCategoriesService => | |
getCategoriesService() | |
.then(loadedCategoriesUpdater) | |
.then(updater => setState(updater)); | |
const toggleUserLog = isActive => setState(toggleUserLogUpdater(isActive)); | |
const toggleSystemLog = isActive => | |
setState(toggleSystemLogUpdater(isActive)); | |
const setStartDate = startDate => setState(setStartDateUpdater(startDate)); | |
const setEndDate = endDate => setState(setEndDateUpdater(endDate)); | |
const categories = { | |
loadCategories, | |
toggleCategoryFilter | |
}; | |
const dates = { | |
setStartDate, | |
setEndDate | |
}; | |
const logs = { | |
toggleSystemLog, | |
toggleUserLog | |
}; | |
const actions = { | |
categories, | |
dates, | |
logs | |
}; | |
return actions; | |
}; | |
export { initialState, createActions }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment