rsnext/examples/with-freactal/provideState.js

29 lines
781 B
JavaScript
Raw Normal View History

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),
},
})),
},
})