From 842fafb4fdf941c766f83aed0a028d1dedf36f5f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Hamal=20Dvo=C5=99=C3=A1k?= <mordae@anilinux.org>
Date: Mon, 17 May 2021 01:55:01 +0200
Subject: [PATCH] Make better use of UnliftIO
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Jan Hamal Dvořák <mordae@anilinux.org>
---
 hikaru.cabal         |  1 +
 lib/Hikaru/Action.hs | 12 ++++++------
 lib/Hikaru/Config.hs |  9 ++++-----
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/hikaru.cabal b/hikaru.cabal
index ff6d92a..482b7a1 100644
--- a/hikaru.cabal
+++ b/hikaru.cabal
@@ -85,6 +85,7 @@ common common
       , string-conversions >=0.4  && <0.5
       , text               >=1.2  && <1.3
       , time               >=1.9  && <1.12
+      , unliftio           >=0.2  && <0.3
       , wai                >=3.2  && <3.3
       , wai-extra          >=3.0  && <3.2
       , wai-websockets     >=3.0  && <3.1
diff --git a/lib/Hikaru/Action.hs b/lib/Hikaru/Action.hs
index c5e4b14..977a658 100644
--- a/lib/Hikaru/Action.hs
+++ b/lib/Hikaru/Action.hs
@@ -113,7 +113,7 @@ module Hikaru.Action
   , FilePath
   )
 where
-  import Relude
+  import Relude hiding (writeIORef, readIORef, modifyIORef', newIORef)
 
   import qualified Data.ByteString as BS
   import qualified Data.ByteString.Lazy as LBS
@@ -121,8 +121,8 @@ where
   import qualified Data.Text.Lazy as LT
   import qualified Network.Wai.Parse as Parse
 
-  import Control.Exception (throwIO, bracket_)
   import Control.Monad.Trans.Resource
+  import UnliftIO
   import Data.Aeson
   import Data.Binary.Builder
   import Data.Dynamic
@@ -177,7 +177,7 @@ where
   getActionField :: (MonadAction m) => (ActionEnv -> IORef a) -> m a
   getActionField field = do
     ref <- field <$> getActionEnv
-    liftIO $ readIORef ref
+    readIORef ref
 
 
   -- |
@@ -186,7 +186,7 @@ where
   setActionField :: (MonadAction m) => (ActionEnv -> IORef a) -> a -> m ()
   setActionField field value = do
     ref <- field <$> getActionEnv
-    liftIO $ writeIORef ref value
+    writeIORef ref value
 
 
   -- |
@@ -196,7 +196,7 @@ where
                     => (ActionEnv -> IORef a) -> (a -> a) -> m ()
   modifyActionField field fn = do
     ref <- field <$> getActionEnv
-    liftIO $ modifyIORef' ref fn
+    modifyIORef' ref fn
 
 
   -- |
@@ -1166,7 +1166,7 @@ where
   -- Same an IO exception in the form of ('RequestError', 'Text').
   --
   throwError :: (MonadAction m) => RequestError -> Text -> m a
-  throwError exn msg = liftIO $ throwIO (exn, msg)
+  throwError exn msg = throwIO (exn, msg)
 
 
   -- Localization ------------------------------------------------------------
diff --git a/lib/Hikaru/Config.hs b/lib/Hikaru/Config.hs
index e0a914c..1529b79 100644
--- a/lib/Hikaru/Config.hs
+++ b/lib/Hikaru/Config.hs
@@ -36,15 +36,14 @@ module Hikaru.Config
   )
 where
   import Relude hiding (drop, lines, isPrefixOf, length, span)
-
-  import qualified Data.Map as Map
-
+  import UnliftIO.Environment
   import Crypto.Random.Entropy
   import Data.ByteArray.Encoding
   import Data.String.Conversions
   import Data.Text hiding (map)
   import Hikaru.Types
-  import System.Environment
+
+  import qualified Data.Map as Map
 
 
   -- |
@@ -57,7 +56,7 @@ where
   -- Read configuration from program environment.
   --
   configFromEnv :: (MonadIO m) => m Config
-  configFromEnv = Map.fromList <$> map conv <$> liftIO getEnvironment
+  configFromEnv = Map.fromList <$> map conv <$> getEnvironment
     where conv (k, v) = (cs k, cs v)
 
 
-- 
GitLab