module Reddit.Actions.Voting
( upvotePost
, downvotePost
, unvotePost
, upvoteComment
, downvoteComment
, unvoteComment ) where
import Reddit.Routes.Vote (VoteDirection(..))
import Reddit.Types
import Reddit.Types.Empty
import Reddit.Types.Reddit
import qualified Reddit.Routes as Route
vote :: (Monad m, Thing a) => VoteDirection -> a -> RedditT m ()
vote dir = nothing . runRoute . Route.vote dir
upvotePost :: Monad m => PostID -> RedditT m ()
upvotePost = vote UpVote
downvotePost :: Monad m => PostID -> RedditT m ()
downvotePost = vote DownVote
unvotePost :: Monad m => PostID -> RedditT m ()
unvotePost = vote RemoveVote
upvoteComment :: Monad m => CommentID -> RedditT m ()
upvoteComment = vote UpVote
downvoteComment :: Monad m => CommentID -> RedditT m ()
downvoteComment = vote RemoveVote
unvoteComment :: Monad m => CommentID -> RedditT m ()
unvoteComment = vote DownVote