Merge pull request #4 from zcash/feature/update-sdk

Update SDK to latest version and integrate with changes.
This commit is contained in:
Kevin Gorham 2019-05-21 04:48:43 -07:00 committed by GitHub
commit d0bed87640
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 29 additions and 117 deletions

View File

@ -31,6 +31,15 @@ internal object SynchronizerModule {
return PreferenceManager.getDefaultSharedPreferences(ZcashWalletApplication.instance)
}
@JvmStatic
@Provides
@Singleton
fun provideJniConverter(): JniConverter {
return JniConverter().also {
if (BuildConfig.DEBUG) it.initLogs()
}
}
@JvmStatic
@Provides
@Singleton
@ -58,11 +67,6 @@ internal object SynchronizerModule {
return server
}
@JvmStatic
@Provides
@Singleton
fun provideTwig(): Twig = TroubleshootingTwig() // troubleshoot on debug, silent on release
@JvmStatic
@Provides
@Singleton
@ -73,8 +77,8 @@ internal object SynchronizerModule {
@JvmStatic
@Provides
@Singleton
fun provideProcessor(application: ZcashWalletApplication, converter: JniConverter, walletConfig: WalletConfig, twigger: Twig): CompactBlockProcessor {
return CompactBlockProcessor(application, converter, walletConfig.cacheDbName, walletConfig.dataDbName, logger = twigger)
fun provideProcessor(application: ZcashWalletApplication, converter: JniConverter, walletConfig: WalletConfig): CompactBlockProcessor {
return CompactBlockProcessor(application, converter, walletConfig.cacheDbName, walletConfig.dataDbName)
}
@JvmStatic
@ -101,17 +105,8 @@ internal object SynchronizerModule {
@JvmStatic
@Provides
@Singleton
fun provideManager(wallet: Wallet, repository: TransactionRepository, downloader: CompactBlockStream, twigger: Twig): ActiveTransactionManager {
return ActiveTransactionManager(repository, downloader.connection, wallet, twigger)
}
@JvmStatic
@Provides
@Singleton
fun provideJniConverter(): JniConverter {
return JniConverter().also {
if (BuildConfig.DEBUG) it.initLogs()
}
fun provideManager(wallet: Wallet, repository: TransactionRepository, downloader: CompactBlockStream): ActiveTransactionManager {
return ActiveTransactionManager(repository, downloader.connection, wallet)
}
@JvmStatic
@ -124,15 +119,7 @@ internal object SynchronizerModule {
manager: ActiveTransactionManager,
wallet: Wallet
): Synchronizer {
return SdkSynchronizer(
downloader,
processor,
repository,
manager,
wallet,
batchSize = 100,
blockPollFrequency = 50_000L
)
return SdkSynchronizer(downloader, processor, repository, manager, wallet, batchSize = 100, blockPollFrequency = 50_000L)
}
}

View File

@ -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
)
}
}

View File

@ -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>
}

View File

@ -35,7 +35,7 @@ class HomePresenter @Inject constructor(
job = Job()
twig("homePresenter starting! from ${this.hashCode()}")
with(view) {
launchBalanceBinder(synchronizer.balance())
launchBalanceBinder(synchronizer.balances())
launchTransactionBinder(synchronizer.allTransactions())
launchActiveTransactionMonitor(synchronizer.activeTransactions())
}

View File

@ -67,7 +67,7 @@ class SendPresenter @Inject constructor(
inputToggleCurrency()
balanceJob?.cancel()
balanceJob = Job()
balanceJob = view.launchBalanceBinder(synchronizer.balance())
balanceJob = view.launchBalanceBinder(synchronizer.balances())
}
override fun stop() {

View File

@ -22,41 +22,36 @@ internal object SynchronizerModule {
@JvmStatic
@Provides
@Singleton
fun provideTwig(): Twig = if (BuildConfig.DEBUG) TroubleshootingTwig() else SilentTwig()
@JvmStatic
@Provides
@Singleton
fun provideDownloader(twigger: Twig): CompactBlockStream {
return CompactBlockStream(COMPACT_BLOCK_SERVER, COMPACT_BLOCK_PORT, twigger)
fun provideDownloader(): CompactBlockStream {
return CompactBlockStream(COMPACT_BLOCK_SERVER, COMPACT_BLOCK_PORT)
}
@JvmStatic
@Provides
@Singleton
fun provideProcessor(application: ZcashWalletApplication, converter: JniConverter, twigger: Twig): CompactBlockProcessor {
return CompactBlockProcessor(application, converter, SampleProperties.wallet.cacheDbName, SampleProperties.wallet.dataDbName, logger = twigger)
fun provideProcessor(application: ZcashWalletApplication, converter: JniConverter): CompactBlockProcessor {
return CompactBlockProcessor(application, converter, SampleProperties.wallet.cacheDbName, SampleProperties.wallet.dataDbName)
}
@JvmStatic
@Provides
@Singleton
fun provideRepository(application: ZcashWalletApplication, converter: JniConverter, twigger: Twig): TransactionRepository {
return PollingTransactionRepository(application, SampleProperties.wallet.dataDbName, 10_000L, converter, twigger)
fun provideRepository(application: ZcashWalletApplication, converter: JniConverter): TransactionRepository {
return PollingTransactionRepository(application, SampleProperties.wallet.dataDbName, 10_000L, converter)
}
@JvmStatic
@Provides
@Singleton
fun provideWallet(application: ZcashWalletApplication, converter: JniConverter, twigger: Twig): Wallet {
return Wallet(converter, application.getDatabasePath(SampleProperties.wallet.dataDbName).absolutePath, "${application.cacheDir.absolutePath}/params", seedProvider = SampleProperties.wallet.seedProvider, spendingKeyProvider = SampleProperties.wallet.spendingKeyProvider, logger = twigger)
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)
}
@JvmStatic
@Provides
@Singleton
fun provideManager(wallet: Wallet, repository: TransactionRepository, downloader: CompactBlockStream, twigger: Twig): ActiveTransactionManager {
return ActiveTransactionManager(repository, downloader.connection, wallet, twigger)
fun provideManager(wallet: Wallet, repository: TransactionRepository, downloader: CompactBlockStream): ActiveTransactionManager {
return ActiveTransactionManager(repository, downloader.connection, wallet)
}
@JvmStatic
@ -76,10 +71,9 @@ internal object SynchronizerModule {
processor: CompactBlockProcessor,
repository: TransactionRepository,
manager: ActiveTransactionManager,
wallet: Wallet,
twigger: Twig
wallet: Wallet
): Synchronizer {
return SdkSynchronizer(downloader, processor, repository, manager, wallet, blockPollFrequency = 500_000L, logger = twigger)
return SdkSynchronizer(downloader, processor, repository, manager, wallet, blockPollFrequency = 500_000L)
}
}

View File

@ -58,7 +58,7 @@ buildscript {
'speeddial': 'com.leinardi.android:speed-dial:2.0.0',
'stetho': 'com.facebook.stetho:stetho:1.5.1',
'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 {