Update SDK to latest version and integrate with changes.
This commit is contained in:
parent
eef5c18b09
commit
4abb9b7353
Binary file not shown.
Binary file not shown.
|
@ -31,6 +31,15 @@ internal object SynchronizerModule {
|
||||||
return PreferenceManager.getDefaultSharedPreferences(ZcashWalletApplication.instance)
|
return PreferenceManager.getDefaultSharedPreferences(ZcashWalletApplication.instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
fun provideJniConverter(): JniConverter {
|
||||||
|
return JniConverter().also {
|
||||||
|
if (BuildConfig.DEBUG) it.initLogs()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
|
@ -58,11 +67,6 @@ internal object SynchronizerModule {
|
||||||
return server
|
return server
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
@Provides
|
|
||||||
@Singleton
|
|
||||||
fun provideTwig(): Twig = TroubleshootingTwig() // troubleshoot on debug, silent on release
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
|
@ -73,8 +77,8 @@ internal object SynchronizerModule {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
fun provideProcessor(application: ZcashWalletApplication, converter: JniConverter, walletConfig: WalletConfig, twigger: Twig): CompactBlockProcessor {
|
fun provideProcessor(application: ZcashWalletApplication, converter: JniConverter, walletConfig: WalletConfig): CompactBlockProcessor {
|
||||||
return CompactBlockProcessor(application, converter, walletConfig.cacheDbName, walletConfig.dataDbName, logger = twigger)
|
return CompactBlockProcessor(application, converter, walletConfig.cacheDbName, walletConfig.dataDbName)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
@ -101,17 +105,8 @@ internal object SynchronizerModule {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
fun provideManager(wallet: Wallet, repository: TransactionRepository, downloader: CompactBlockStream, twigger: Twig): ActiveTransactionManager {
|
fun provideManager(wallet: Wallet, repository: TransactionRepository, downloader: CompactBlockStream): ActiveTransactionManager {
|
||||||
return ActiveTransactionManager(repository, downloader.connection, wallet, twigger)
|
return ActiveTransactionManager(repository, downloader.connection, wallet)
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
@Provides
|
|
||||||
@Singleton
|
|
||||||
fun provideJniConverter(): JniConverter {
|
|
||||||
return JniConverter().also {
|
|
||||||
if (BuildConfig.DEBUG) it.initLogs()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
@ -124,15 +119,7 @@ internal object SynchronizerModule {
|
||||||
manager: ActiveTransactionManager,
|
manager: ActiveTransactionManager,
|
||||||
wallet: Wallet
|
wallet: Wallet
|
||||||
): Synchronizer {
|
): Synchronizer {
|
||||||
return SdkSynchronizer(
|
return SdkSynchronizer(downloader, processor, repository, manager, wallet, batchSize = 100, blockPollFrequency = 50_000L)
|
||||||
downloader,
|
|
||||||
processor,
|
|
||||||
repository,
|
|
||||||
manager,
|
|
||||||
wallet,
|
|
||||||
batchSize = 100,
|
|
||||||
blockPollFrequency = 50_000L
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,59 +0,0 @@
|
||||||
package cash.z.android.wallet.data
|
|
||||||
|
|
||||||
import android.text.format.DateUtils
|
|
||||||
import cash.z.wallet.sdk.dao.WalletTransaction
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
|
||||||
import kotlinx.coroutines.channels.ReceiveChannel
|
|
||||||
import kotlinx.coroutines.channels.produce
|
|
||||||
import kotlinx.coroutines.delay
|
|
||||||
import kotlinx.coroutines.isActive
|
|
||||||
import java.math.BigDecimal
|
|
||||||
import kotlin.math.roundToLong
|
|
||||||
import kotlin.random.Random
|
|
||||||
import kotlin.random.nextInt
|
|
||||||
import kotlin.random.nextLong
|
|
||||||
|
|
||||||
class SampleTransactionRepository(val scope: CoroutineScope) : TransactionRepository {
|
|
||||||
/**
|
|
||||||
* Just send a sample stream of balances, every so often
|
|
||||||
*/
|
|
||||||
override fun balance() = scope.produce {
|
|
||||||
var currentBalance = 0.0
|
|
||||||
while (isActive) {
|
|
||||||
send(BigDecimal(currentBalance))
|
|
||||||
delay(500)
|
|
||||||
currentBalance += 0.1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Just send a sample stream of transactions, every so often
|
|
||||||
*/
|
|
||||||
override fun transactions(): ReceiveChannel<WalletTransaction> = scope.produce {
|
|
||||||
var oldestTimestamp = System.currentTimeMillis() - (4 * DateUtils.WEEK_IN_MILLIS)
|
|
||||||
while (isActive) {
|
|
||||||
delay(1500L)
|
|
||||||
send(createSampleTransaction(oldestTimestamp).also { oldestTimestamp = it.timeInSeconds * 1000 })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun createSampleTransaction(oldestTimestamp: Long): WalletTransaction {
|
|
||||||
// up to 20% of the delta
|
|
||||||
val upperBound = System.currentTimeMillis() + Math.round(0.2 * (System.currentTimeMillis() - oldestTimestamp))
|
|
||||||
val txId = Random.nextLong(0L..(Long.MAX_VALUE - 1L))
|
|
||||||
val value = Random.nextLong(1L..1_500_000_000L) - 750_000_000L
|
|
||||||
val height = Random.nextInt(0..(Int.MAX_VALUE - 1))
|
|
||||||
val isSend = value > 0L
|
|
||||||
val time = Random.nextLong(oldestTimestamp..upperBound)
|
|
||||||
val isMined = Random.nextBoolean()
|
|
||||||
return WalletTransaction(
|
|
||||||
txId = txId,
|
|
||||||
value = value,
|
|
||||||
height = height,
|
|
||||||
isSend = isSend,
|
|
||||||
timeInSeconds = time/1000,
|
|
||||||
isMined = isMined
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
package cash.z.android.wallet.data
|
|
||||||
|
|
||||||
import cash.z.wallet.sdk.dao.WalletTransaction
|
|
||||||
import kotlinx.coroutines.channels.ReceiveChannel
|
|
||||||
import java.math.BigDecimal
|
|
||||||
|
|
||||||
interface TransactionRepository {
|
|
||||||
fun balance(): ReceiveChannel<BigDecimal>
|
|
||||||
fun transactions(): ReceiveChannel<WalletTransaction>
|
|
||||||
}
|
|
|
@ -35,7 +35,7 @@ class HomePresenter @Inject constructor(
|
||||||
job = Job()
|
job = Job()
|
||||||
twig("homePresenter starting! from ${this.hashCode()}")
|
twig("homePresenter starting! from ${this.hashCode()}")
|
||||||
with(view) {
|
with(view) {
|
||||||
launchBalanceBinder(synchronizer.balance())
|
launchBalanceBinder(synchronizer.balances())
|
||||||
launchTransactionBinder(synchronizer.allTransactions())
|
launchTransactionBinder(synchronizer.allTransactions())
|
||||||
launchActiveTransactionMonitor(synchronizer.activeTransactions())
|
launchActiveTransactionMonitor(synchronizer.activeTransactions())
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@ class SendPresenter @Inject constructor(
|
||||||
inputToggleCurrency()
|
inputToggleCurrency()
|
||||||
balanceJob?.cancel()
|
balanceJob?.cancel()
|
||||||
balanceJob = Job()
|
balanceJob = Job()
|
||||||
balanceJob = view.launchBalanceBinder(synchronizer.balance())
|
balanceJob = view.launchBalanceBinder(synchronizer.balances())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun stop() {
|
override fun stop() {
|
||||||
|
|
|
@ -22,41 +22,36 @@ internal object SynchronizerModule {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
fun provideTwig(): Twig = if (BuildConfig.DEBUG) TroubleshootingTwig() else SilentTwig()
|
fun provideDownloader(): CompactBlockStream {
|
||||||
|
return CompactBlockStream(COMPACT_BLOCK_SERVER, COMPACT_BLOCK_PORT)
|
||||||
@JvmStatic
|
|
||||||
@Provides
|
|
||||||
@Singleton
|
|
||||||
fun provideDownloader(twigger: Twig): CompactBlockStream {
|
|
||||||
return CompactBlockStream(COMPACT_BLOCK_SERVER, COMPACT_BLOCK_PORT, twigger)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
fun provideProcessor(application: ZcashWalletApplication, converter: JniConverter, twigger: Twig): CompactBlockProcessor {
|
fun provideProcessor(application: ZcashWalletApplication, converter: JniConverter): CompactBlockProcessor {
|
||||||
return CompactBlockProcessor(application, converter, SampleProperties.wallet.cacheDbName, SampleProperties.wallet.dataDbName, logger = twigger)
|
return CompactBlockProcessor(application, converter, SampleProperties.wallet.cacheDbName, SampleProperties.wallet.dataDbName)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
fun provideRepository(application: ZcashWalletApplication, converter: JniConverter, twigger: Twig): TransactionRepository {
|
fun provideRepository(application: ZcashWalletApplication, converter: JniConverter): TransactionRepository {
|
||||||
return PollingTransactionRepository(application, SampleProperties.wallet.dataDbName, 10_000L, converter, twigger)
|
return PollingTransactionRepository(application, SampleProperties.wallet.dataDbName, 10_000L, converter)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
fun provideWallet(application: ZcashWalletApplication, converter: JniConverter, twigger: Twig): Wallet {
|
fun provideWallet(application: ZcashWalletApplication, converter: JniConverter): Wallet {
|
||||||
return Wallet(converter, application.getDatabasePath(SampleProperties.wallet.dataDbName).absolutePath, "${application.cacheDir.absolutePath}/params", seedProvider = SampleProperties.wallet.seedProvider, spendingKeyProvider = SampleProperties.wallet.spendingKeyProvider, logger = twigger)
|
return Wallet(converter, application.getDatabasePath(SampleProperties.wallet.dataDbName).absolutePath, "${application.cacheDir.absolutePath}/params", seedProvider = SampleProperties.wallet.seedProvider, spendingKeyProvider = SampleProperties.wallet.spendingKeyProvider)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
fun provideManager(wallet: Wallet, repository: TransactionRepository, downloader: CompactBlockStream, twigger: Twig): ActiveTransactionManager {
|
fun provideManager(wallet: Wallet, repository: TransactionRepository, downloader: CompactBlockStream): ActiveTransactionManager {
|
||||||
return ActiveTransactionManager(repository, downloader.connection, wallet, twigger)
|
return ActiveTransactionManager(repository, downloader.connection, wallet)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
@ -76,10 +71,9 @@ internal object SynchronizerModule {
|
||||||
processor: CompactBlockProcessor,
|
processor: CompactBlockProcessor,
|
||||||
repository: TransactionRepository,
|
repository: TransactionRepository,
|
||||||
manager: ActiveTransactionManager,
|
manager: ActiveTransactionManager,
|
||||||
wallet: Wallet,
|
wallet: Wallet
|
||||||
twigger: Twig
|
|
||||||
): Synchronizer {
|
): Synchronizer {
|
||||||
return SdkSynchronizer(downloader, processor, repository, manager, wallet, blockPollFrequency = 500_000L, logger = twigger)
|
return SdkSynchronizer(downloader, processor, repository, manager, wallet, blockPollFrequency = 500_000L)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,7 @@ buildscript {
|
||||||
'speeddial': 'com.leinardi.android:speed-dial:2.0.0',
|
'speeddial': 'com.leinardi.android:speed-dial:2.0.0',
|
||||||
'stetho': 'com.facebook.stetho:stetho:1.5.1',
|
'stetho': 'com.facebook.stetho:stetho:1.5.1',
|
||||||
'zcash': [
|
'zcash': [
|
||||||
'walletSdk': "cash.z.android.wallet:zcash-android-testnet:1.7.5-alpha@aar"
|
'walletSdk': "cash.z.android.wallet:zcash-android-testnet:1.7.8-alpha@aar"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
repositories {
|
repositories {
|
||||||
|
|
Loading…
Reference in New Issue