Skip to content

Commit

Permalink
update sync status
Browse files Browse the repository at this point in the history
  • Loading branch information
JustinBeBoy committed Mar 3, 2024
1 parent 522738d commit 813a59a
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 6 deletions.
25 changes: 24 additions & 1 deletion libwallet/assets/dcr/sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ type SyncData struct {

synced bool
syncing bool
cancelCtx context.Context
cancelSync context.CancelFunc
cancelRescan context.CancelFunc
syncCanceled chan struct{}
Expand Down Expand Up @@ -90,6 +89,8 @@ type activeSyncData struct {
rescanStartTime int64

totalInactiveSeconds int64
isrescanning bool
isAddDiscovering bool
}

const (
Expand Down Expand Up @@ -382,6 +383,28 @@ func (asset *Asset) CurrentSyncStage() utils.SyncStage {
return InvalidSyncStage
}

func (asset *Asset) IsAddressDiscovering() bool {
asset.syncData.mu.RLock()
defer asset.syncData.mu.RUnlock()

if asset.syncData != nil && asset.syncData.syncing {
return asset.syncData.isAddDiscovering
}

return false
}

func (asset *Asset) IsSycnRescanning() bool {
asset.syncData.mu.RLock()
defer asset.syncData.mu.RUnlock()

if asset.syncData != nil && asset.syncData.syncing {
return asset.syncData.isrescanning
}

return false
}

func (asset *Asset) ConnectedPeers() int32 {
return asset.syncData.connectedPeers()
}
Expand Down
8 changes: 6 additions & 2 deletions libwallet/assets/dcr/syncnotification.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@ func (asset *Asset) fetchCFiltersEnded() {
}

// Fetch Headers Callbacks

func (asset *Asset) fetchHeadersStarted() {
if !asset.IsSyncing() {
return
Expand Down Expand Up @@ -295,6 +294,7 @@ func (asset *Asset) discoverAddressesStarted() {
}

asset.syncData.mu.Lock()
asset.syncData.isAddDiscovering = true
asset.syncData.syncStage = AddressDiscoverySyncStage
asset.syncData.addressDiscoveryProgress.AddressDiscoveryStartTime = time.Now().Unix()
asset.syncData.addressDiscoveryCompletedOrCanceled = make(chan bool)
Expand Down Expand Up @@ -402,6 +402,9 @@ func (asset *Asset) discoverAddressesFinished() {
if !asset.IsSyncing() {
return
}
asset.syncData.mu.Lock()
asset.syncData.isAddDiscovering = false
asset.syncData.mu.Unlock()

asset.stopUpdatingAddressDiscoveryProgress()
}
Expand All @@ -417,7 +420,6 @@ func (asset *Asset) stopUpdatingAddressDiscoveryProgress() {
}

// Blocks Scan Callbacks

func (asset *Asset) rescanStarted() {
asset.stopUpdatingAddressDiscoveryProgress()

Expand All @@ -429,6 +431,7 @@ func (asset *Asset) rescanStarted() {
return
}

asset.syncData.isrescanning = true
asset.syncData.syncStage = HeadersRescanSyncStage
asset.syncData.rescanStartTime = time.Now().Unix()

Expand Down Expand Up @@ -518,6 +521,7 @@ func (asset *Asset) rescanFinished() {
}

asset.syncData.mu.Lock()
asset.syncData.isrescanning = false
asset.syncData.headersRescanProgress.TotalTimeRemainingSeconds = 0
asset.syncData.headersRescanProgress.TotalSyncProgress = 100

Expand Down
20 changes: 17 additions & 3 deletions ui/page/components/wallet_sync_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"gioui.org/font"
"gioui.org/layout"
"gioui.org/unit"
"github.com/crypto-power/cryptopower/libwallet/assets/dcr"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
libutils "github.com/crypto-power/cryptopower/libwallet/utils"
"github.com/crypto-power/cryptopower/ui/cryptomaterial"
Expand Down Expand Up @@ -273,6 +274,12 @@ func (wsi *WalletSyncInfo) syncContent(gtx C, uniform layout.Inset) D {
isRescanning := wsi.wallet.IsRescanning() && !isSyncing
isInProgress := isSyncing || isRescanning
bestBlock := wsi.wallet.GetBestBlock()
isAddDiscovering := false
syncIsScanning := false
if !isBtcORLtcAsset {
isAddDiscovering = wsi.wallet.(*dcr.Asset).IsAddressDiscovering()
syncIsScanning = wsi.wallet.(*dcr.Asset).IsSycnRescanning()
}
dp8 := values.MarginPadding8
return uniform.Layout(gtx, func(gtx C) D {
return layout.Flex{Axis: layout.Horizontal}.Layout(gtx,
Expand All @@ -292,13 +299,13 @@ func (wsi *WalletSyncInfo) syncContent(gtx C, uniform layout.Inset) D {
return wsi.labelTexSize16Layout(values.String(values.StrSyncingProgress), dp8, true)(gtx)
}),
layout.Rigid(func(gtx C) D {
if !isInProgress || (isRescanning && (isBtcORLtcAsset)) {
if !isInProgress || (isRescanning && isBtcORLtcAsset) {
return D{}
}
return wsi.labelTexSize16Layout(values.String(values.StrSyncCompTime), dp8, true)(gtx)
}),
layout.Rigid(func(gtx C) D {
if !(isRescanning && (isBtcORLtcAsset)) {
if !(isRescanning && isBtcORLtcAsset) {
return D{}
}
return wsi.labelTexSize16Layout(values.String(values.StrAddressDiscoveryInProgress), dp8, true)(gtx)
Expand Down Expand Up @@ -327,6 +334,13 @@ func (wsi *WalletSyncInfo) syncContent(gtx C, uniform layout.Inset) D {
syncProgress := values.String(values.StrWalletNotSynced)
if wsi.wallet.IsSyncing() {
syncProgress = values.StringF(values.StrSyncingProgressStat, daysBehind)
if !isBtcORLtcAsset {
if isAddDiscovering {
syncProgress = values.String(values.StrAddressDiscovering)
} else if syncIsScanning {
syncProgress = values.String(values.StrRescanningBlocks)
}
}
} else if wsi.wallet.IsRescanning() {
syncProgress = values.String(values.StrRescanningBlocks)
} else if wsi.wallet.IsSynced() {
Expand All @@ -336,7 +350,7 @@ func (wsi *WalletSyncInfo) syncContent(gtx C, uniform layout.Inset) D {
return wsi.labelTexSize16Layout(syncProgress, dp8, false)(gtx)
}),
layout.Rigid(func(gtx C) D {
if !isInProgress || (isRescanning && (isBtcORLtcAsset)) {
if !isInProgress || (isRescanning && isBtcORLtcAsset) {
return D{}
}
_, timeLeft := wsi.progressStatusDetails()
Expand Down
1 change: 1 addition & 0 deletions ui/values/localizable/en.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ const EN = `
"address" = "Address"
"addressCopied" = "Address copied"
"addressDiscoveryInProgress" = "Address Discovery in Progress..."
"addressDiscovering" = "Address Discovering"
"addressDiscoveryStarted" = "Address discovery started successfully"
"addressDiscoveryStartedBody" = "See wallet information page for progress"
"addrNotOwned" = "Address not owned by any wallet"
Expand Down
1 change: 1 addition & 0 deletions ui/values/strings.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ const (
StrAddressDiscoveryInProgress = "addressDiscoveryInProgress"
StrAddressDiscoveryStarted = "addressDiscoveryStarted"
StrAddressDiscoveryStartedBody = "addressDiscoveryStartedBody"
StrAddressDiscovering = "addressDiscovering"
StrAddrNotOwned = "addrNotOwned"
StrAddVSP = "addVSP"
StrAddWallet = "addWallet"
Expand Down

0 comments on commit 813a59a

Please sign in to comment.