rvv041 - Address Book updated

- Functionality to copy receiver address to Clipboard  added
	- Functionality to Send Zcash to selected AddresBook entry added
This commit is contained in:
Rene V. Vergara A. 2024-05-24 21:23:06 -04:00
parent e946df43f8
commit 16b5acabf2
2 changed files with 55 additions and 32 deletions

4
.gitignore vendored
View File

@ -2,4 +2,6 @@
*~
dist-newstyle/
zenith.db
zenith.log
zenith.log
zenith.db-shm
zenith.db-wal

View File

@ -112,6 +112,7 @@ data Name
| AmtField
| MemoField
| ABViewport
| ABList
deriving (Eq, Show, Ord)
data DialogInput = DialogInput
@ -174,6 +175,7 @@ data State = State
, _eventDispatch :: !(BC.BChan Tick)
, _timer :: !Int
, _txForm :: !(Form SendInput () Name)
, _abaddresses :: !(L.List Name (Entity AddressBook))
}
makeLenses ''State
@ -347,17 +349,6 @@ drawUI s = [splashDialog s, helpDialog s, displayDialog s, inputDialog s, ui s]
(hBox [capCommand "" "Send", capCommand "<esc> " "Cancel"]))
Blank -> emptyWidget
AdrBook ->
-- D.renderDialog
-- (D.dialog (Just (str "Select Wallet")) Nothing 50)
-- (selectListBox "Wallets" (st ^. wallets) listDrawWallet <=>
-- C.hCenter
-- (hBox
-- [ capCommand "↑↓ " "move"
-- , capCommand "↲ " "select"
-- , capCommand "N" "ew"
-- , capCommand "S" "how phrase"
-- , xCommand
-- ]))
D.renderDialog
(D.dialog (Just $ str " Address Book ") Nothing 60)
(withAttr abDefAttr $
@ -367,11 +358,11 @@ drawUI s = [splashDialog s, helpDialog s, displayDialog s, inputDialog s, ui s]
hLimit 50 $
vBox $ [vLimit 16 $
hLimit 50 $
vBox $ --[ L.renderList listDrawAB True (s^.abaddresses) ],
[str "Addresses 1.................",
str "Addresses 2.....",
str "Addresses 3",
str "Addresses 4"],
vBox $ [ L.renderList listDrawAB True (s ^. abaddresses) ],
-- [str "Addresses 1.................",
-- str "Addresses 2.....",
-- str "Addresses 3",
-- str "Addresses 4"],
padTop Max $
vLimit 4 $
hLimit 50 $
@ -612,6 +603,14 @@ listDrawTx znet sel tx =
then withAttr customAttr (txt $ "> " <> s)
else txt $ " " <> s
listDrawAB :: Bool -> Entity AddressBook -> Widget Name
listDrawAB sel ab =
let selStr s =
if sel
then withAttr abSelAttr (txt $ "" <> s <> ">")
else txt s
in selStr $ addressBookDescrip (entityVal ab)
customAttr :: A.AttrName
customAttr = L.listSelectedAttr <> A.attrName "custom"
@ -989,19 +988,35 @@ appEvent (BT.VtyEvent e) = do
case e of
V.EvKey (V.KChar 'x') [] ->
BT.modify $ set dialogBox Blank
V.EvKey V.KEnter [] -> do
ns <- liftIO $ refreshWallet s
BT.put ns
BT.modify $ set dialogBox Blank
V.EvKey (V.KChar 'n') [] -> do
BT.modify $
set inputForm $
updateFormState (DialogInput "New Wallet") $
s ^. inputForm
BT.modify $ set dialogBox WName
V.EvKey (V.KChar 's') [] ->
BT.modify $ set displayBox PhraseDisplay
ev -> BT.zoom wallets $ L.handleListEvent ev
V.EvKey (V.KChar 'c') [] -> do
-- Copy Address to Clipboard
case L.listSelectedElement $ s ^. abaddresses of
Just (_, a) -> do
liftIO $
setClipboard $
T.unpack $ addressBookAddress (entityVal a)
BT.modify $
set msg $
"Address copied to Clipboard from >>\n" ++
T.unpack (addressBookDescrip (entityVal a)) ++ "->\n" ++
T.unpack (addressBookAddress (entityVal a)) ++ "!"
BT.modify $ set displayBox MsgDisplay
_ -> do
BT.modify $ set msg $ "Error while copying the address!!"
BT.modify $ set displayBox MsgDisplay
-- Send Zcash transaction
V.EvKey (V.KChar 's') [] -> do
case L.listSelectedElement $ s ^. abaddresses of
Just (_, a) -> do
BT.modify $
set txForm $
mkSendForm (s ^. balance) (SendInput (addressBookAddress (entityVal a)) 0.0 "")
BT.modify $ set dialogBox SendTx
_ -> do
BT.modify $ set msg $ "No receiver address available!!"
BT.modify $ set displayBox MsgDisplay
-- Process any other event
ev -> BT.zoom abaddresses $ L.handleListEvent ev
Blank -> do
case e of
V.EvKey (V.KChar '\t') [] -> focusRing %= F.focusNext
@ -1033,6 +1048,8 @@ appEvent (BT.VtyEvent e) = do
BT.zoom addresses $ L.handleListEvent ev
Just TList ->
BT.zoom transactions $ L.handleListEvent ev
Just ABList ->
BT.zoom transactions $ L.handleListEvent ev
_anyName -> return ()
where
printMsg :: String -> BT.EventM Name State ()
@ -1058,7 +1075,7 @@ theMap =
, (barDoneAttr, V.white `on` V.blue)
, (barToDoAttr, V.white `on` V.black)
, (abDefAttr, V.white `on` V.blue)
, (abSelAttr, V.blue `on` V.white)
, (abSelAttr, V.black `on` V.white)
, (abMBarAttr, V.white `on` V.black)
]
@ -1105,6 +1122,9 @@ runZenithCLI config = do
if not (null walList)
then zcashWalletLastSync $ entityVal $ head walList
else 0
abookList <- getAdrBook pool $ zgb_net chainInfo
bal <-
if not (null accList)
then getBalance pool $ entityKey $ head accList
@ -1133,7 +1153,7 @@ runZenithCLI config = do
else Blank)
True
(mkInputForm $ DialogInput "Main")
(F.focusRing [AList, TList])
(F.focusRing [AList, TList,ABList])
(zgb_blocks chainInfo)
dbFilePath
host
@ -1145,6 +1165,7 @@ runZenithCLI config = do
eventChan
0
(mkSendForm 0 $ SendInput "" 0.0 "")
(L.list ABList (Vec.fromList abookList) 1)
Left e -> do
print $
"No Zebra node available on port " <>