Skip to content

Instantly share code, notes, and snippets.

@jamestthompson3
Last active June 3, 2018 13:32
Show Gist options
  • Save jamestthompson3/ed92ea1686e1153dea739a5441ce371a to your computer and use it in GitHub Desktop.
Save jamestthompson3/ed92ea1686e1153dea739a5441ce371a to your computer and use it in GitHub Desktop.
const StreamIndex = compose(
withState('userList', 'updateUserList', []),
withHandlers({
setUserList: ({ updateUserList }) => users => updateUserList(state => users),
addLike: ({ updateUserList }) => (user, like) => addUserLike(user, like),
addDislike: ({ updateUserList }) => (user, dislike) => addUserDislike(user, dislike),
deleteLike: ({ updateUserList }) => (user, like) =>
deleteUserLike(user, like.id).then(() =>
updateUserList(state => [
...state.map(i => {
if (i.user === user) {
i.likes = i.likes.filter(i => i.id !== like.id)
}
return i
})
])
),
deleteDislike: ({ updateUserList }) => (user, dislike) =>
deleteUserDislike(user, dislike.id).then(() =>
updateUserList(state => [
...state.map(i => {
if (i.user === user) {
i.dislikes = i.dislikes.filter(i => i.id !== dislike.id)
}
return i
})
])
)
}),
withRouter,
load,
selectUser,
withContext(
{ updateFunctions: PropTypes.object, user: PropTypes.object },
({ selectedUser, addLike, addDislike, deleteLike, deleteDislike }) => ({
user: selectedUser,
updateFunctions: { addLike, addDislike, deleteLike, deleteDislike }
})
)
)(IndexPage)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment