rsnext/examples/with-freactal/provideState.js
Joe Haddad 18a9c7e371
Improve linting rules to catch more errors (#9374)
* Update `packages/`

* Update examples

* Update tests

* Update bench

* Update top level files

* Fix build

* trigger
2019-11-10 19:24:53 -08:00

28 lines
781 B
JavaScript

import { provideState, update } from 'freactal'
import { fetchUserRepos } from './githubApi'
export default serverState =>
provideState({
initialState: () => ({
...serverState,
ajaxStatus: false,
}),
effects: {
setAjaxLoader: update((state, ajaxStatus) => ({ ajaxStatus })),
fetchGithubReposList: (effects, username, page) =>
effects
.setAjaxLoader(true)
.then(() => fetchUserRepos(username, page))
.then(repos => effects.setAjaxLoader(false).then(() => repos))
.then(repos => state => ({
...state,
githubReposList: {
username,
page,
repos: state.githubReposList.repos.concat(repos),
},
})),
},
})