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 :: VoteDirection -> a -> RedditT m ()
vote VoteDirection
dir = RedditT m Empty -> RedditT m ()
forall (m :: * -> *). Monad m => m Empty -> m ()
nothing (RedditT m Empty -> RedditT m ())
-> (a -> RedditT m Empty) -> a -> RedditT m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Route -> RedditT m Empty
forall a (m :: * -> *).
(FromJSON a, Monad m) =>
Route -> RedditT m a
runRoute (Route -> RedditT m Empty) -> (a -> Route) -> a -> RedditT m Empty
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VoteDirection -> a -> Route
forall a. Thing a => VoteDirection -> a -> Route
Route.vote VoteDirection
dir
upvotePost :: Monad m => PostID -> RedditT m ()
upvotePost :: PostID -> RedditT m ()
upvotePost = VoteDirection -> PostID -> RedditT m ()
forall (m :: * -> *) a.
(Monad m, Thing a) =>
VoteDirection -> a -> RedditT m ()
vote VoteDirection
UpVote
downvotePost :: Monad m => PostID -> RedditT m ()
downvotePost :: PostID -> RedditT m ()
downvotePost = VoteDirection -> PostID -> RedditT m ()
forall (m :: * -> *) a.
(Monad m, Thing a) =>
VoteDirection -> a -> RedditT m ()
vote VoteDirection
DownVote
unvotePost :: Monad m => PostID -> RedditT m ()
unvotePost :: PostID -> RedditT m ()
unvotePost = VoteDirection -> PostID -> RedditT m ()
forall (m :: * -> *) a.
(Monad m, Thing a) =>
VoteDirection -> a -> RedditT m ()
vote VoteDirection
RemoveVote
upvoteComment :: Monad m => CommentID -> RedditT m ()
= VoteDirection -> CommentID -> RedditT m ()
forall (m :: * -> *) a.
(Monad m, Thing a) =>
VoteDirection -> a -> RedditT m ()
vote VoteDirection
UpVote
downvoteComment :: Monad m => CommentID -> RedditT m ()
= VoteDirection -> CommentID -> RedditT m ()
forall (m :: * -> *) a.
(Monad m, Thing a) =>
VoteDirection -> a -> RedditT m ()
vote VoteDirection
RemoveVote
unvoteComment :: Monad m => CommentID -> RedditT m ()
= VoteDirection -> CommentID -> RedditT m ()
forall (m :: * -> *) a.
(Monad m, Thing a) =>
VoteDirection -> a -> RedditT m ()
vote VoteDirection
DownVote