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