1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00
next.js/examples/with-freactal/provideState.js

29 lines
776 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)
}
}))
}
})