Merge pull request #4 from zcash/feature/update-sdk
Update SDK to latest version and integrate with changes.
This commit is contained in:
commit
d0bed87640
Binary file not shown.
Binary file not shown.
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
twig("homePresenter starting! from ${this.hashCode()}")
|
||||
with(view) {
|
||||
launchBalanceBinder(synchronizer.balance())
|
||||
launchBalanceBinder(synchronizer.balances())
|
||||
launchTransactionBinder(synchronizer.allTransactions())
|
||||
launchActiveTransactionMonitor(synchronizer.activeTransactions())
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue