Skip to content

Commit

Permalink
fix wallet detail and render delay bug
Browse files Browse the repository at this point in the history
fix wallet details bug

added delay for table implementation

fix overview render delay bug
  • Loading branch information
oshorefueled committed Jan 7, 2020
1 parent 689cc45 commit 44b628e
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 45 deletions.
68 changes: 45 additions & 23 deletions fyne/pages/handler/overview.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,24 +29,26 @@ type OverviewHandler struct {
Steps int32
hideSyncDetails bool

Container fyne.CanvasObject
Balance []*canvas.Text
Transactions []dcrlibwallet.Transaction
PageBoxes fyne.CanvasObject
SyncStatusWidget *canvas.Text
TimeLeftWidget *widget.Label
BlockHeightTime *widget.Label
ProgressBar *widget.ProgressBar
BlockStatus *fyne.Container
BlockStatusSynced fyne.CanvasObject
BlockStatusSyncing fyne.CanvasObject
Table *widgets.Table
ConnectedPeersWidget *widget.Label
SyncStepWidget *widget.Label
BlockHeadersWidget *widget.Label
WalletSyncInfo *fyne.Container
Scroll *widget.ScrollContainer
CancelButton *widget.Button
Container fyne.CanvasObject
TransactionsContainer *fyne.Container
Balance []*canvas.Text
Transactions []dcrlibwallet.Transaction
PageBoxes fyne.CanvasObject
SyncStatusWidget *canvas.Text
TimeLeftWidget *widget.Label
BlockHeightTime *widget.Label
ProgressBar *widget.ProgressBar
BlockStatus *fyne.Container
BlockStatusSynced fyne.CanvasObject
BlockStatusSyncing fyne.CanvasObject
Table *widgets.Table
TableHeader *widget.Box
ConnectedPeersWidget *widget.Label
SyncStepWidget *widget.Label
BlockHeadersWidget *widget.Label
WalletSyncInfo *fyne.Container
Scroll *widget.ScrollContainer
SyncButton *widget.Button

StepsChannel chan int32
}
Expand All @@ -69,8 +71,15 @@ func (handler *OverviewHandler) UpdateBalance(multiWallet *dcrlibwallet.MultiWal

func (handler *OverviewHandler) UpdateBlockStatusBox(wallet *dcrlibwallet.MultiWallet) {
handler.UpdateSyncStatus(wallet, false)
if !handler.Syncing && !handler.Synced {
handler.SyncButton.SetText("Reconnect")
} else {
handler.SyncButton.SetText("Cancel")
}

if handler.Synced {
handler.BlockStatus.Objects = []fyne.CanvasObject{}
handler.SyncButton.SetText("Disconnect")
handler.BlockStatus.AddObject(handler.BlockStatusSynced)
handler.UpdateConnectedPeers(wallet.ConnectedPeers(), false)
handler.UpdateBlockHeightTime(wallet, false)
Expand All @@ -89,6 +98,7 @@ func (handler *OverviewHandler) UpdateTransactions(wallet *dcrlibwallet.MultiWal
var transactionList []*widget.Box
var height int32

// handler.TransactionsContainer.Hide()
height = wallet.GetBestBlock().Height
if len(handler.Table.Result.Children) > 1 {
handler.Table.DeleteAll()
Expand Down Expand Up @@ -176,6 +186,7 @@ func (handler *OverviewHandler) UpdateProgressBar(refresh bool) {
}

func (handler *OverviewHandler) UpdateSyncSteps(refresh bool) {
fmt.Printf("handler steps %v\n \n", handler.Steps)
handler.SyncStepWidget.SetText(fmt.Sprintf("Step %d/3", handler.Steps))
if refresh {
handler.SyncStepWidget.Refresh()
Expand All @@ -200,25 +211,36 @@ func (handler *OverviewHandler) blockSyncStatus() (string, color.Color) {
return "Not Synced", color.Gray{Y: 123}
}

func (handler *OverviewHandler) CancelSync(wallet *dcrlibwallet.MultiWallet) {
func (handler *OverviewHandler) SyncTrigger(wallet *dcrlibwallet.MultiWallet) {
if wallet.IsSyncing() {
wallet.CancelSync()
handler.ConnectedPeers = 0
err := beeep.Notify("Sync Canceled", "wallet sync stopped until app restart", "assets/information.png")
err := beeep.Notify("Sync Canceled", "wallet sync stopped until wallet reconnect", "assets/information.png")
if err != nil {
log.Println("error initiating alert:", err.Error())
}
} else if !wallet.IsSynced() && !wallet.IsSyncing() {
err := wallet.RestartSpvSync()
if err != nil {
notifyError := beeep.Notify("Sync Error", "error restarting spv sync", "assets/information.png")
if notifyError != nil {
log.Println("error initiating alert:", err.Error())
}
log.Printf("error restarting SPV sync %v", err.Error())
}
}
handler.Container.Refresh()
}

func (handler *OverviewHandler) UpdateWalletsSyncBox(wallet *dcrlibwallet.MultiWallet) {
walletIds := wallet.OpenedWalletIDsRaw()
sort.Ints(walletIds)

handler.WalletSyncInfo.Objects = []fyne.CanvasObject{}
for _, id := range walletIds {
w := wallet.WalletWithID(id)
headersFetched := fmt.Sprintf("%d of %d", w.GetBestBlock(), wallet.GetBestBlock().Height)
progress := fmt.Sprintf("%s behind", dcrlibwallet.CalculateDaysBehind(w.GetBestBlockTimeStamp()))
handler.WalletSyncInfo.Objects = []fyne.CanvasObject{}
handler.WalletSyncInfo.AddObject(
walletSyncBox(
w.Name,
Expand Down Expand Up @@ -313,6 +335,7 @@ func transactionStatus(bestBlockHeight int32, txn dcrlibwallet.Transaction) stri
}

func recentTransactions(wallet *dcrlibwallet.MultiWallet) (transactions []dcrlibwallet.Transaction, err error) {
transactions = []dcrlibwallet.Transaction{}
walletIds := wallet.OpenedWalletIDsRaw()

// add recent transactions of all wallets to a single slice
Expand All @@ -331,7 +354,6 @@ func recentTransactions(wallet *dcrlibwallet.MultiWallet) (transactions []dcrlib
if len(transactions) > 5 {
transactions = transactions[:5]
}

return
}

Expand Down Expand Up @@ -395,7 +417,7 @@ func (handler *OverviewHandler) PreserveSyncSteps() {
defer func() {
fmt.Printf("\n \n Preserve sync step go routine has been killed!\n \n")
}()
handler.Steps = 0
handler.Steps = 1
for {
select {
case progress := <-handler.StepsChannel:
Expand Down
37 changes: 19 additions & 18 deletions fyne/pages/overview.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,12 @@ import (
"fyne.io/fyne/canvas"
"fyne.io/fyne/layout"
"fyne.io/fyne/widget"
"github.com/raedahgroup/dcrlibwallet"
"github.com/raedahgroup/godcr/fyne/pages/handler"
"github.com/raedahgroup/godcr/fyne/pages/handler/values"
"github.com/raedahgroup/godcr/fyne/widgets"
"image/color"
"sort"
"time"

"github.com/raedahgroup/dcrlibwallet"
"github.com/raedahgroup/godcr/fyne/widgets"
)

const historyPageIndex = 1
Expand All @@ -30,7 +28,6 @@ var overviewHandler = &handler.OverviewHandler{}
func overviewPageContent(app *AppInterface) fyne.CanvasObject {
ov := &overview{}
ov.app = app
//app.Window.Resize(fyne.NewSize(650, 680))
ov.multiWallet = app.MultiWallet
ov.walletIds = ov.multiWallet.OpenedWalletIDsRaw()
if len(ov.walletIds) == 0 {
Expand All @@ -41,9 +38,6 @@ func overviewPageContent(app *AppInterface) fyne.CanvasObject {
defer func() {
go overviewHandler.UpdateBalance(app.MultiWallet)
go overviewHandler.UpdateBlockStatusBox(app.MultiWallet)
}()
go func() {
time.Sleep(200 * time.Millisecond)
overviewHandler.UpdateWalletsSyncBox(app.MultiWallet)
}()

Expand Down Expand Up @@ -74,11 +68,15 @@ func (ov *overview) pageBoxes() (object fyne.CanvasObject) {

func (ov *overview) recentTransactionBox() fyne.CanvasObject {
table := &widgets.Table{}
table.NewTable(transactionRowHeader())
overviewHandler.TableHeader = transactionRowHeader()
table.NewTable(overviewHandler.TableHeader)
overviewHandler.Table = table
overviewHandler.UpdateTransactions(ov.multiWallet, handler.TransactionUpdate{})
transactionsContainer := fyne.NewContainerWithLayout(layout.NewFixedGridLayout(fyne.NewSize(515, 200)), table.Container)
overviewHandler.TransactionsContainer = transactionsContainer

return widget.NewVBox(
table.Result,
transactionsContainer,
fyne.NewContainerWithLayout(layout.NewHBoxLayout(),
layout.NewSpacer(),
widgets.NewClickableBox(
Expand All @@ -98,11 +96,11 @@ func (ov *overview) initializeBlockStatusWidgets() {
timeLeft := widget.NewLabelWithStyle("", fyne.TextAlignLeading, fyne.TextStyle{})
connectedPeers := widget.NewLabelWithStyle("", fyne.TextAlignTrailing, fyne.TextStyle{})
progressBar := widget.NewProgressBar()
syncSteps := widget.NewLabelWithStyle("Step 0/3", fyne.TextAlignTrailing, fyne.TextStyle{})
syncSteps := widget.NewLabelWithStyle("Step 1/3", fyne.TextAlignTrailing, fyne.TextStyle{})
blockHeadersStatus := widget.NewLabelWithStyle("Fetching block headers 0%", fyne.TextAlignTrailing, fyne.TextStyle{})
walletSyncInfo := fyne.NewContainerWithLayout(layout.NewHBoxLayout())
walletSyncScrollContainer := widget.NewScrollContainer(walletSyncInfo)
cancelButton := widget.NewButton("Cancel", func() { overviewHandler.CancelSync(ov.multiWallet)})
syncButton := widget.NewButton("", func() { overviewHandler.SyncTrigger(ov.multiWallet)})
blockHeightTime := widget.NewLabelWithStyle("Latest block 0 . 0s ago", fyne.TextAlignLeading, fyne.TextStyle{})
overviewHandler.BlockHeightTime = widget.NewLabelWithStyle("", fyne.TextAlignLeading, fyne.TextStyle{})

Expand All @@ -114,7 +112,7 @@ func (ov *overview) initializeBlockStatusWidgets() {
overviewHandler.BlockHeadersWidget = blockHeadersStatus
overviewHandler.WalletSyncInfo = walletSyncInfo
overviewHandler.Scroll = walletSyncScrollContainer
overviewHandler.CancelButton = cancelButton
overviewHandler.SyncButton = syncButton
overviewHandler.BlockHeightTime = blockHeightTime
}

Expand All @@ -133,7 +131,7 @@ func (ov *overview) blockStatusBoxSyncing() fyne.CanvasObject {
widgets.NewHSpacer(values.NilSpacer),
h.SyncStatusWidget,
layout.NewSpacer(),
h.CancelButton,
h.SyncButton,
))
progressBarContainer := fyne.NewContainerWithLayout(layout.NewFixedGridLayout(fyne.NewSize(515, 20)),
h.ProgressBar)
Expand All @@ -155,10 +153,13 @@ func (ov *overview) blockStatusBoxSyncing() fyne.CanvasObject {

func (ov *overview) blockStatusBoxSynced() fyne.CanvasObject {
h := overviewHandler
top := fyne.NewContainerWithLayout(layout.NewHBoxLayout(),
widgets.NewHSpacer(values.NilSpacer),
h.SyncStatusWidget,
layout.NewSpacer())
top := fyne.NewContainerWithLayout(layout.NewFixedGridLayout(fyne.NewSize(515, 24)),
widget.NewHBox(
widgets.NewHSpacer(values.NilSpacer),
h.SyncStatusWidget,
layout.NewSpacer(),
h.SyncButton,
))
syncedStatus := fyne.NewContainerWithLayout(layout.NewBorderLayout(nil, nil, h.BlockHeightTime, h.ConnectedPeersWidget),
h.BlockHeightTime, h.ConnectedPeersWidget)

Expand Down
6 changes: 2 additions & 4 deletions fyne/pages/txnotifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"fyne.io/fyne/widget"
"github.com/raedahgroup/godcr/fyne/pages/handler"
"log"
"math"
"strconv"

"github.com/gen2brain/beeep"
Expand All @@ -30,9 +29,8 @@ func (app *multiWalletTxListener) OnPeerConnectedOrDisconnected(numberOfConnecte
}

func (app *multiWalletTxListener) OnHeadersFetchProgress(headersFetchProgress *dcrlibwallet.HeadersFetchProgressReport) {
overviewHandler.SyncProgress = float64(headersFetchProgress.FetchedHeadersCount) / float64(headersFetchProgress.TotalHeadersToFetch)
overviewHandler.SyncProgress = math.Round(overviewHandler.SyncProgress*100) / 100
if headersFetchProgress.HeadersFetchProgress == 100 && overviewHandler.Steps == 0 {
overviewHandler.SyncProgress = float64(headersFetchProgress.TotalSyncProgress) / 100
if headersFetchProgress.HeadersFetchProgress == 100 && overviewHandler.Steps == 1 {
overviewHandler.StepsChannel <- headersFetchProgress.HeadersFetchProgress
overviewHandler.UpdateSyncSteps(true)
}
Expand Down

0 comments on commit 44b628e

Please sign in to comment.