matebeamter/src/Control/Product.hs
2019-10-13 22:25:05 +02:00

50 lines
1 KiB
Haskell

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PackageImports #-}
{-# LANGUAGE DataKinds #-}
module Control.Product where
import Servant
import Servant.Client
import Servant.Server
import qualified Data.Text as T
import Data.Maybe (fromMaybe)
import Data.Text.I18n
import Data.String (fromString)
import Control.Monad.Reader (ask)
import Control.Monad.IO.Class (liftIO)
-- imports from "mateamt"
import qualified "mateamt" Types as MT
-- internal imports
import View
import Types
import Client
import Util
productListControl
:: Maybe T.Text
-> Maybe MT.ProductRefine
-> UserHandler ProductListPage
productListControl mcookie mrefine = do
(ReadState l10n backend _) <- ask
let loc = Locale
(fromMaybe "en" $ lookup "locale" =<< fmap parseCookieText mcookie)
eProducts <- liftIO $ runClientM
(productShortList mrefine)
backend
case eProducts of
Right products ->
return $ productListPage l10n loc mrefine products
Left err ->
throwError $ err500
{ errBody = fromString $ show err
}