80 lines
2.7 KiB
Kotlin
80 lines
2.7 KiB
Kotlin
package cash.z.android.wallet.di.module
|
|
|
|
import cash.z.android.wallet.BuildConfig
|
|
import cash.z.android.wallet.ZcashWalletApplication
|
|
import cash.z.android.wallet.sample.SampleProperties
|
|
import cash.z.android.wallet.sample.SampleProperties.COMPACT_BLOCK_PORT
|
|
import cash.z.android.wallet.sample.SampleProperties.COMPACT_BLOCK_SERVER
|
|
import cash.z.wallet.sdk.data.*
|
|
import cash.z.wallet.sdk.jni.JniConverter
|
|
import cash.z.wallet.sdk.secure.Wallet
|
|
import dagger.Module
|
|
import dagger.Provides
|
|
import javax.inject.Singleton
|
|
|
|
/**
|
|
* Module that contributes all the objects necessary for the synchronizer, which is basically everything that has
|
|
* application scope.
|
|
*/
|
|
@Module
|
|
internal object SynchronizerModule {
|
|
|
|
@JvmStatic
|
|
@Provides
|
|
@Singleton
|
|
fun provideDownloader(): CompactBlockStream {
|
|
return CompactBlockStream(COMPACT_BLOCK_SERVER, COMPACT_BLOCK_PORT)
|
|
}
|
|
|
|
@JvmStatic
|
|
@Provides
|
|
@Singleton
|
|
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): TransactionRepository {
|
|
return PollingTransactionRepository(application, SampleProperties.wallet.dataDbName, 10_000L, converter)
|
|
}
|
|
|
|
@JvmStatic
|
|
@Provides
|
|
@Singleton
|
|
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): ActiveTransactionManager {
|
|
return ActiveTransactionManager(repository, downloader.connection, wallet)
|
|
}
|
|
|
|
@JvmStatic
|
|
@Provides
|
|
@Singleton
|
|
fun provideJniConverter(): JniConverter {
|
|
return JniConverter().also {
|
|
if (BuildConfig.DEBUG) it.initLogs()
|
|
}
|
|
}
|
|
|
|
@JvmStatic
|
|
@Provides
|
|
@Singleton
|
|
fun provideSynchronizer(
|
|
downloader: CompactBlockStream,
|
|
processor: CompactBlockProcessor,
|
|
repository: TransactionRepository,
|
|
manager: ActiveTransactionManager,
|
|
wallet: Wallet
|
|
): Synchronizer {
|
|
return SdkSynchronizer(downloader, processor, repository, manager, wallet, blockPollFrequency = 500_000L)
|
|
}
|
|
|
|
}
|