feat(tui): implement shielding command
This commit is contained in:
parent
6be3630fbc
commit
13c24ca528
1 changed files with 51 additions and 26 deletions
|
@ -69,8 +69,8 @@ import Control.Monad.Logger
|
||||||
( LoggingT
|
( LoggingT
|
||||||
, NoLoggingT
|
, NoLoggingT
|
||||||
, logDebugN
|
, logDebugN
|
||||||
, runFileLoggingT
|
|
||||||
, runNoLoggingT
|
, runNoLoggingT
|
||||||
|
, runStderrLoggingT
|
||||||
)
|
)
|
||||||
import Data.Aeson
|
import Data.Aeson
|
||||||
import Data.HexString (HexString(..), toText)
|
import Data.HexString (HexString(..), toText)
|
||||||
|
@ -170,10 +170,8 @@ data AdrBookEntry = AdrBookEntry
|
||||||
|
|
||||||
makeLenses ''AdrBookEntry
|
makeLenses ''AdrBookEntry
|
||||||
|
|
||||||
data ShDshEntry = ShDshEntry
|
newtype ShDshEntry = ShDshEntry
|
||||||
{ _totalTransparent :: !Float
|
{ _shAmt :: Float
|
||||||
, _totalShielded :: !Float
|
|
||||||
, _shAmt :: !Float
|
|
||||||
} deriving (Show)
|
} deriving (Show)
|
||||||
|
|
||||||
makeLenses ''ShDshEntry
|
makeLenses ''ShDshEntry
|
||||||
|
@ -259,11 +257,11 @@ drawUI s = [splashDialog s, helpDialog s, displayDialog s, inputDialog s, ui s]
|
||||||
(" Zenith - " <>
|
(" Zenith - " <>
|
||||||
show (st ^. network) <>
|
show (st ^. network) <>
|
||||||
" - " <>
|
" - " <>
|
||||||
(T.unpack
|
T.unpack
|
||||||
(maybe
|
(maybe
|
||||||
"(None)"
|
"(None)"
|
||||||
(\(_, w) -> zcashWalletName $ entityVal w)
|
(\(_, w) -> zcashWalletName $ entityVal w)
|
||||||
(L.listSelectedElement (st ^. wallets)))) ++
|
(L.listSelectedElement (st ^. wallets))) ++
|
||||||
" "))
|
" "))
|
||||||
(C.hCenter
|
(C.hCenter
|
||||||
(str
|
(str
|
||||||
|
@ -434,7 +432,21 @@ drawUI s = [splashDialog s, helpDialog s, displayDialog s, inputDialog s, ui s]
|
||||||
DeshieldForm ->
|
DeshieldForm ->
|
||||||
D.renderDialog
|
D.renderDialog
|
||||||
(D.dialog (Just (str " De-Shield ZEC ")) Nothing 50)
|
(D.dialog (Just (str " De-Shield ZEC ")) Nothing 50)
|
||||||
(renderForm (st ^. deshieldForm) <=>
|
(C.hCenter
|
||||||
|
(padAll 1 $
|
||||||
|
vBox
|
||||||
|
[ str $
|
||||||
|
"Transparent Bal.: " ++
|
||||||
|
if st ^. network == MainNet
|
||||||
|
then displayZec (st ^. tBalance)
|
||||||
|
else displayTaz (st ^. tBalance)
|
||||||
|
, str $
|
||||||
|
"Shielded Bal.: " ++
|
||||||
|
if st ^. network == MainNet
|
||||||
|
then displayZec (st ^. sBalance)
|
||||||
|
else displayTaz (st ^. sBalance)
|
||||||
|
]) <=>
|
||||||
|
renderForm (st ^. deshieldForm) <=>
|
||||||
C.hCenter
|
C.hCenter
|
||||||
(hBox [capCommand "P" "roceed", capCommand "<esc> " "Cancel"]))
|
(hBox [capCommand "P" "roceed", capCommand "<esc> " "Cancel"]))
|
||||||
ShieldForm ->
|
ShieldForm ->
|
||||||
|
@ -692,20 +704,10 @@ mkSendForm bal =
|
||||||
padBottom (Pad 1) $ vLimit 1 (hLimit 15 $ str s <+> fill ' ') <+> w
|
padBottom (Pad 1) $ vLimit 1 (hLimit 15 $ str s <+> fill ' ') <+> w
|
||||||
|
|
||||||
mkDeshieldForm :: Integer -> ShDshEntry -> Form ShDshEntry e Name
|
mkDeshieldForm :: Integer -> ShDshEntry -> Form ShDshEntry e Name
|
||||||
mkDeshieldForm bal =
|
mkDeshieldForm tbal =
|
||||||
newForm
|
newForm
|
||||||
[ label "Total Transp. : " @@=
|
[ label "Amount: " @@=
|
||||||
editShowableFieldWithValidate
|
editShowableFieldWithValidate shAmt AmtField (isAmountValid tbal)
|
||||||
totalTransparent
|
|
||||||
TotalTranspField
|
|
||||||
(isAmountValid bal)
|
|
||||||
, label "Total Shielded : " @@=
|
|
||||||
editShowableFieldWithValidate
|
|
||||||
totalShielded
|
|
||||||
TotalShieldedField
|
|
||||||
(isAmountValid bal)
|
|
||||||
, label "Amount: " @@=
|
|
||||||
editShowableFieldWithValidate shAmt AmtField (isAmountValid bal)
|
|
||||||
]
|
]
|
||||||
where
|
where
|
||||||
isAmountValid :: Integer -> Float -> Bool
|
isAmountValid :: Integer -> Float -> Bool
|
||||||
|
@ -1491,7 +1493,30 @@ appEvent (BT.VtyEvent e) = do
|
||||||
BT.modify $ set dialogBox SendTx
|
BT.modify $ set dialogBox SendTx
|
||||||
V.EvKey (V.KChar 'b') [] ->
|
V.EvKey (V.KChar 'b') [] ->
|
||||||
BT.modify $ set dialogBox AdrBook
|
BT.modify $ set dialogBox AdrBook
|
||||||
V.EvKey (V.KChar 'd') [] ->
|
V.EvKey (V.KChar 'd') [] -> do
|
||||||
|
pool <- liftIO $ runNoLoggingT $ initPool $ s ^. dbPath
|
||||||
|
selAcc <-
|
||||||
|
do case L.listSelectedElement $ s ^. accounts of
|
||||||
|
Nothing -> do
|
||||||
|
let fAcc =
|
||||||
|
L.listSelectedElement $
|
||||||
|
L.listMoveToBeginning $ s ^. accounts
|
||||||
|
case fAcc of
|
||||||
|
Nothing ->
|
||||||
|
throw $
|
||||||
|
userError "Failed to select account"
|
||||||
|
Just (_j, w1) -> return w1
|
||||||
|
Just (_k, w) -> return w
|
||||||
|
tBal <-
|
||||||
|
liftIO $
|
||||||
|
getTransparentBalance pool $ entityKey selAcc
|
||||||
|
sBal <-
|
||||||
|
liftIO $ getShieldedBalance pool $ entityKey selAcc
|
||||||
|
BT.modify $ set tBalance tBal
|
||||||
|
BT.modify $ set sBalance sBal
|
||||||
|
BT.modify $
|
||||||
|
set deshieldForm $
|
||||||
|
mkDeshieldForm sBal (ShDshEntry 0.0)
|
||||||
BT.modify $ set dialogBox DeshieldForm
|
BT.modify $ set dialogBox DeshieldForm
|
||||||
V.EvKey (V.KChar 'h') [] -> do
|
V.EvKey (V.KChar 'h') [] -> do
|
||||||
pool <- liftIO $ runNoLoggingT $ initPool $ s ^. dbPath
|
pool <- liftIO $ runNoLoggingT $ initPool $ s ^. dbPath
|
||||||
|
@ -1667,7 +1692,7 @@ runZenithTUI config = do
|
||||||
""
|
""
|
||||||
Nothing
|
Nothing
|
||||||
uBal
|
uBal
|
||||||
(mkDeshieldForm 0 (ShDshEntry 0 0 0.0))
|
(mkDeshieldForm 0 (ShDshEntry 0.0))
|
||||||
tBal
|
tBal
|
||||||
sBal
|
sBal
|
||||||
Left _e -> do
|
Left _e -> do
|
||||||
|
|
Loading…
Reference in a new issue