From a02bf265ae96ded72075cdd7c9138f08c002e2ba Mon Sep 17 00:00:00 2001 From: staticvoid Date: Tue, 12 Jul 2022 18:03:17 +0300 Subject: [PATCH] 4r: Use v1 api --- 4r/Api/Color.hs | 2 +- 4r/Color/Utils.hs | 2 ++ 4r/Main.hs | 21 +++++++++++++-------- 4r/Polysemy/Output/IO.hs | 2 ++ 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/4r/Api/Color.hs b/4r/Api/Color.hs index ebd5143..e907a7b 100644 --- a/4r/Api/Color.hs +++ b/4r/Api/Color.hs @@ -14,7 +14,7 @@ module Api.Color ( import Relude -import Api.Types +import Api.V1.Types import Color.Print import Color.Utils import Polysemy.Commonmark.AST (commonmark) diff --git a/4r/Color/Utils.hs b/4r/Color/Utils.hs index 97b92b3..aeb6d36 100644 --- a/4r/Color/Utils.hs +++ b/4r/Color/Utils.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE Strict #-} + module Color.Utils (textColor) where import Relude diff --git a/4r/Main.hs b/4r/Main.hs index b2c1c9a..b85e84c 100644 --- a/4r/Main.hs +++ b/4r/Main.hs @@ -1,16 +1,19 @@ +{-# LANGUAGE Strict #-} + module Main (main) where import Relude hiding (Proxy) -import Api qualified as Api +import Api.V1 qualified as Api import Api.Color () -import Api.Types (last_activity_date) +import Api.V1.Types qualified as Api import Cli import Color.Print import Network.HTTP.Client import Polysemy (Member, Members, Sem) import Polysemy.Embed (Embed) import Polysemy.Error (Error, errorToIOFinal) +import Polysemy.Fail (Fail, failToEmbed) import Polysemy.Final (Final, embedToFinal, runFinal) import Polysemy.Output (Output) import Polysemy.Output.IO (putTextLnO, runOutputToStdout) @@ -28,15 +31,17 @@ runProgram :: [ Output Text , ServantClient , Error ClientError + , Fail , Embed IO , Final IO ] () -> IO () runProgram clientEnv = - (>>= either (error . fromString . displayException) pure) - . runFinal + runFinal . embedToFinal + . failToEmbed @IO + . (>>= either (error . fromString . displayException) pure) . errorToIOFinal . runServantClientWith clientEnv . runOutputToStdout @@ -49,22 +54,22 @@ sgrFullInterpreter :: sgrFullInterpreter noAnsi = if noAnsi then ignoreSgrFull else runSgrFull program :: - Members [Error ClientError, ServantClient, Output Text, Sgr, SgrRegion] r => + Members [Fail, Error ClientError, ServantClient, Output Text, Sgr, SgrRegion] r => Choice -> Sem r () program GetSections = do - sections <- Api.getSections + [Api.OGetSections sections] <- Api.request [Api.IGetSections Api.GetSections] withSgr [SetColor Foreground Vivid White] do sequenceA_ $ intersperse (putTextLnO "") (printColor <$> sections) program GetTopics{maxEntries} = do - topics <- Api.getTopics + [Api.OGetTopics topics] <- Api.request [Api.IGetTopics Api.GetTopics] withSgr [SetColor Foreground Vivid White] do sequenceA_ $ intersperse (putTextLnO "") (fmap printColor . maybe id take maxEntries . reverse $ sortBy (comparing (.last_activity_date)) topics) program GetTopic{topic_id} = do - topic <- Api.getTopic topic_id + [Api.OGetTopic topic] <- Api.request [Api.IGetTopic Api.GetTopic {topic_id}] withSgr [SetColor Foreground Vivid White] do printColor topic diff --git a/4r/Polysemy/Output/IO.hs b/4r/Polysemy/Output/IO.hs index 6569218..9816790 100644 --- a/4r/Polysemy/Output/IO.hs +++ b/4r/Polysemy/Output/IO.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE Strict #-} + module Polysemy.Output.IO ( runOutputToIO , runOutputToStdout