mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
27 lines
729 B
JavaScript
27 lines
729 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)
|
||
|
}
|
||
|
}))
|
||
|
}
|
||
|
})
|