new: latestScannedHeight added to SDKSynchronizer

This commit is contained in:
Francisco Gindre 2021-07-15 20:04:01 -03:00
parent aecaf3d99b
commit 2491114b71
1 changed files with 13 additions and 4 deletions

View File

@ -124,12 +124,12 @@ public class SDKSynchronizer: Synchronizer {
public private(set) var progress: Float = 0.0
public private(set) var blockProcessor: CompactBlockProcessor
public private(set) var initializer: Initializer
public private(set)var latestScannedHeight: BlockHeight
public private(set) var connectionState: ConnectionState
private var transactionManager: OutboundTransactionManager
private var transactionRepository: TransactionRepository
private var utxoRepository: UnspentTransactionOutputRepository
/**
Creates an SDKSynchronizer instance
- Parameter initializer: a wallet Initializer object
@ -158,6 +158,7 @@ public class SDKSynchronizer: Synchronizer {
self.transactionRepository = transactionRepository
self.utxoRepository = utxoRepository
self.blockProcessor = blockProcessor
self.latestScannedHeight = (try? transactionRepository.lastScannedHeight()) ?? initializer.walletBirthday.height
self.subscribeToProcessorNotifications(self.blockProcessor)
}
@ -408,8 +409,12 @@ public class SDKSynchronizer: Synchronizer {
@objc func processorFinished(_ notification: Notification) {
// FIX: Pending transaction updates fail if done from another thread. Improvement needed: explicitly define queues for sql repositories
DispatchQueue.main.async { [weak self] in
guard let self = self else { return }
if let blockHeight = notification.userInfo?[CompactBlockProcessorNotificationKey.latestScannedBlockHeight] as? BlockHeight {
self.latestScannedHeight = blockHeight
}
self.refreshPendingTransactions()
self.status = .synced
}
@ -671,8 +676,12 @@ public class SDKSynchronizer: Synchronizer {
case .stopped:
NotificationCenter.default.post(name: Notification.Name.synchronizerStopped, object: self)
case .synced:
NotificationCenter.default.post(name: Notification.Name.synchronizerSynced, object: self)
NotificationCenter.default.post(
name: Notification.Name.synchronizerSynced,
object: self,
userInfo: [
SDKSynchronizer.NotificationKeys.blockHeight : self.latestScannedHeight,
])
case .unprepared:
break
case .downloading: