rvv041 - AddressBook - reloading AddressBook List in progress...

This commit is contained in:
Rene V. Vergara A. 2024-09-05 10:13:32 -04:00
parent f8fa5a005a
commit 1931098ee9
2 changed files with 57 additions and 35 deletions

View file

@ -68,6 +68,7 @@ import Zenith.Utils
, isValidString , isValidString
, padWithZero , padWithZero
, getZenithPath , getZenithPath
, isEmpty
) )
data AppEvent data AppEvent
@ -122,7 +123,9 @@ data AppEvent
| CloseMsgAB | CloseMsgAB
| CheckValidAddress !T.Text | CheckValidAddress !T.Text
| CheckValidDescrip !T.Text | CheckValidDescrip !T.Text
| SaveNewABEntry
| ShowMessage !T.Text | ShowMessage !T.Text
deriving (Eq, Show) deriving (Eq, Show)
data AppModel = AppModel data AppModel = AppModel
@ -855,12 +858,11 @@ buildUI wenv model = widgetTree
] ]
] ]
, spacer , spacer
, hstack [ , hstack
button "Save" (saveAddrBook [ button "Save" SaveNewABEntry `nodeEnabled`
(ZcashNetDB (model ^. network))
(model ^. abdescrip)
(model ^. abaddress)) `nodeEnabled`
((model ^. abAddressValid) && (model ^. abDescripValid)) ((model ^. abAddressValid) && (model ^. abDescripValid))
, spacer
, button "Cancel" CloseNewAdrBook `nodeEnabled` True
] ]
] ]
msgAdrBookOverlay= msgAdrBookOverlay=
@ -945,21 +947,6 @@ generateQRCodes config = do
Orchard -> Just $ (T.append "zcash:" . getUA . walletAddressUAddress) w Orchard -> Just $ (T.append "zcash:" . getUA . walletAddressUAddress) w
Sprout -> Nothing Sprout -> Nothing
saveAddrBook :: ZcashNetDB -> T.Text -> T.Text -> AppEvent
saveAddrBook n d a = do
dPath <- liftIO $ getZenithPath
pool <- runNoLoggingT $ initPool $ (T.pack dPath)
res <-
liftIO $
saveAdrsInAdrBook pool $
AddressBook
n
d
a
case res of
Nothing -> return $ ShowMessage "Error while saving address book entry"
Just _ -> return $ ShowMessage "New address book entry saved successfully!!"
handleEvent :: handleEvent ::
WidgetEnv AppModel AppEvent WidgetEnv AppModel AppEvent
-> WidgetNode AppModel AppEvent -> WidgetNode AppModel AppEvent
@ -1201,12 +1188,19 @@ handleEvent wenv node model evt =
(i < (fromIntegral (model ^. balance) / 100000000.0)) (i < (fromIntegral (model ^. balance) / 100000000.0))
] ]
ShowTxId tx -> [Model $ model & showId ?~ tx & modalMsg .~ Nothing] ShowTxId tx -> [Model $ model & showId ?~ tx & modalMsg .~ Nothing]
-- |
-- | Address Book Events
-- |
CheckValidAddress a -> [Model $ model & abAddressValid .~ isRecipientValid a] CheckValidAddress a -> [Model $ model & abAddressValid .~ isRecipientValid a]
CheckValidDescrip a -> [Model $ model & abDescripValid .~ isValidString a] CheckValidDescrip a -> [Model $ model & abDescripValid .~ isValidString a]
ShowAdrBook -> [Model $ model & showAdrBook .~ True & menuPopup .~ False] ShowAdrBook -> [Model $ model & showAdrBook .~ True & menuPopup .~ False]
CloseAdrBook -> [Model $ model & showAdrBook .~ False] CloseAdrBook -> [Model $ model & showAdrBook .~ False]
NewAdrBkEntry -> [Model $ model & newAdrBkEntry .~ True & menuPopup .~ False] NewAdrBkEntry -> [Model $ model & newAdrBkEntry .~ True & menuPopup .~ False]
CloseNewAdrBook -> [Model $ model & newAdrBkEntry .~ False] CloseNewAdrBook -> do
[Model $ model & newAdrBkEntry .~ False]
SaveNewABEntry ->
[ Task $ saveAddrBook (model ^. configuration) (ZcashNetDB (model ^. network)) (model ^. abdescrip) (model ^. abaddress)
]
NotImplemented -> [Model $ model & msgAB ?~ "Function not implemented..." & menuPopup .~ False] NotImplemented -> [Model $ model & msgAB ?~ "Function not implemented..." & menuPopup .~ False]
CloseMsgAB -> [Model $ model & msgAB .~ Nothing & inError .~ False] CloseMsgAB -> [Model $ model & msgAB .~ Nothing & inError .~ False]
ShowMessage a -> [Model $ model & msgAB ?~ a & menuPopup .~ False] ShowMessage a -> [Model $ model & msgAB ?~ a & menuPopup .~ False]
@ -1297,6 +1291,36 @@ handleEvent wenv node model evt =
Just _ -> do Just _ -> do
wL <- getWallets pool (model ^. network) wL <- getWallets pool (model ^. network)
return $ LoadWallets wL return $ LoadWallets wL
-- |
-- | Address Book -> save new entry into database
-- |
saveAddrBook :: Config -> ZcashNetDB -> T.Text -> T.Text -> IO AppEvent
saveAddrBook config n d a = do
let dbPath = c_dbPath config
pool <- runNoLoggingT $ initPool dbPath
res <-
liftIO $
saveAdrsInAdrBook pool $
AddressBook
n
d
a
case res of
Nothing -> return $ ShowMessage "Error saving the AddressBook entry..."
Just _ -> loadABList config (model ^. network)
-- |
-- |
-- |
loadABList :: Config -> ZcashNet -> IO AppEvent
loadABList config n = do
let dbPath = c_dbPath config
pool <- runNoLoggingT $ initPool dbPath
abList <- getAdrBook pool n
if isEmpty abList
then return $ ShowMessage "Error loading the AddressBook list..."
else do
model & abaddressList ?~ abList
return $ ShowMessage "AddressBook loaded successfully!!!"
scanZebra :: T.Text -> T.Text -> Int -> (AppEvent -> IO ()) -> IO () scanZebra :: T.Text -> T.Text -> Int -> (AppEvent -> IO ()) -> IO ()
scanZebra dbPath zHost zPort sendMsg = do scanZebra dbPath zHost zPort sendMsg = do
@ -1463,9 +1487,7 @@ runZenithGUI config = do
Nothing Nothing
True True
bal bal
(if unconfBal == 0 (if unconfBal == 0 then Nothing else Just unconfBal)
then Nothing
else Just unconfBal)
Orchard Orchard
qr qr
False False
@ -1476,9 +1498,7 @@ runZenithGUI config = do
Nothing Nothing
"" ""
"" ""
(SaveAddress (if not (null accList) (SaveAddress (if not (null accList) then Just (head accList) else Nothing ) )
then Just (head accList)
else Nothing ) )
False False
False False
Nothing Nothing
@ -1492,7 +1512,7 @@ runZenithGUI config = do
False False
False False
Nothing Nothing
"" hD
False False
False False
"" ""
@ -1501,7 +1521,6 @@ runZenithGUI config = do
False False
abList abList
Nothing Nothing
-- hD
startApp model handleEvent buildUI (params hD) startApp model handleEvent buildUI (params hD)
Left e -> do Left e -> do
initDb dbFilePath initDb dbFilePath
@ -1547,7 +1566,7 @@ runZenithGUI config = do
False False
False False
Nothing Nothing
"" hD
False False
False False
"" ""
@ -1556,7 +1575,6 @@ runZenithGUI config = do
False False
[] []
Nothing Nothing
-- hD
startApp model handleEvent buildUI (params hD) startApp model handleEvent buildUI (params hD)
where where
params hd = params hd =

View file

@ -158,3 +158,7 @@ padWithZero n s
| (length s) >= n = s | (length s) >= n = s
| otherwise = padWithZero n ("0" ++ s) | otherwise = padWithZero n ("0" ++ s)
isEmpty :: [a] -> Bool
isEmpty [] = True
isEmpty _ = False