btc-lsp-0.1.0.0: src/BtcLsp/Yesod/Handler/About.hs
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
module BtcLsp.Yesod.Handler.About where
import qualified BtcLsp.Class.Env
import qualified BtcLsp.Math.OnChain as Math
import qualified BtcLsp.Math.Swap as Math
import BtcLsp.Yesod.Data.Widget
import BtcLsp.Yesod.Import
getAboutR :: Handler Html
getAboutR = do
App {appMRunner = UnliftIO run} <- getYesod
minAmt <- liftIO $ run getSwapIntoLnMinAmt
mExamplesWidget <- liftIO . run $ newExamplesWidget minAmt
defaultLayout $ do
setTitleI MsgAboutRTitle
$(widgetFile "about")
newExamplesWidget ::
( BtcLsp.Class.Env.Env m
) =>
Money 'Usr 'OnChain 'Fund ->
m (Maybe Widget)
newExamplesWidget minAmt = do
caps <-
mapM
( \amt -> do
mcap <- Math.newSwapCapM amt
pure $ (amt,) <$> mcap
)
[ minAmt,
minAmt * 5,
minAmt * 100
]
pure
. newListWidget
$ ( \(fundAmt, Math.SwapCap {..}) ->
[ ( MsgAboutExamplesUserOnChainFunding,
MsgSatoshi $
from fundAmt
),
( MsgAboutExamplesLspSwapFee,
MsgSatoshi $
from swapCapFee
),
( MsgAboutExamplesUserOutgoingCap,
MsgSatoshi $
from swapCapUsr
),
( MsgAboutExamplesUserIncomingCap,
MsgSatoshi $
from swapCapLsp
),
( MsgAboutExamplesTotalChanCap,
MsgSatoshi $
from swapCapUsr
+ from swapCapLsp
)
]
)
<$> catMaybes caps