101 lines
3.2 KiB
Kotlin
101 lines
3.2 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.di.module.Properties.CACHE_DB_NAME
|
|
import cash.z.android.wallet.di.module.Properties.COMPACT_BLOCK_PORT
|
|
import cash.z.android.wallet.di.module.Properties.COMPACT_BLOCK_SERVER
|
|
import cash.z.android.wallet.di.module.Properties.DATA_DB_NAME
|
|
import cash.z.android.wallet.di.module.Properties.SEED_PROVIDER
|
|
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 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)
|
|
}
|
|
|
|
@JvmStatic
|
|
@Provides
|
|
@Singleton
|
|
fun provideProcessor(application: ZcashWalletApplication, converter: JniConverter, twigger: Twig): CompactBlockProcessor {
|
|
return CompactBlockProcessor(application, converter, CACHE_DB_NAME, DATA_DB_NAME, logger = twigger)
|
|
}
|
|
|
|
@JvmStatic
|
|
@Provides
|
|
@Singleton
|
|
fun provideRepository(application: ZcashWalletApplication, converter: JniConverter, twigger: Twig): TransactionRepository {
|
|
return PollingTransactionRepository(application, DATA_DB_NAME, 10_000L, converter, twigger)
|
|
}
|
|
|
|
@JvmStatic
|
|
@Provides
|
|
@Singleton
|
|
fun provideWallet(application: ZcashWalletApplication, converter: JniConverter, twigger: Twig): Wallet {
|
|
return Wallet(converter, application.getDatabasePath(DATA_DB_NAME).absolutePath, "${application.cacheDir.absolutePath}/params", seedProvider = SEED_PROVIDER, logger = twigger)
|
|
}
|
|
|
|
@JvmStatic
|
|
@Provides
|
|
@Singleton
|
|
fun provideManager(twigger: Twig): ActiveTransactionManager {
|
|
return ActiveTransactionManager(twigger)
|
|
}
|
|
|
|
@JvmStatic
|
|
@Provides
|
|
@Singleton
|
|
fun provideJniConverter(): JniConverter = JniConverter()
|
|
|
|
@JvmStatic
|
|
@Provides
|
|
@Singleton
|
|
fun provideSynchronizer(
|
|
downloader: CompactBlockStream,
|
|
processor: CompactBlockProcessor,
|
|
repository: TransactionRepository,
|
|
manager: ActiveTransactionManager,
|
|
wallet: Wallet,
|
|
twigger: Twig
|
|
): Synchronizer {
|
|
return Synchronizer(downloader, processor, repository, manager, wallet, logger = twigger)
|
|
}
|
|
|
|
}
|
|
|
|
|
|
// TODO: load most of these properties in later, perhaps from settings
|
|
object Properties {
|
|
val COMPACT_BLOCK_SERVER = Servers.ZCASH_TESTNET.host
|
|
const val COMPACT_BLOCK_PORT = 9067
|
|
const val CACHE_DB_NAME = "wallet_cache21.db"
|
|
const val DATA_DB_NAME = "wallet_data21.db"
|
|
val SEED_PROVIDER = SampleSeedProvider("dummyseed")
|
|
}
|
|
|
|
enum class Servers(val host: String) {
|
|
EMULATOR("10.0.2.2"),
|
|
WLAN("10.0.0.26"),
|
|
BOLT_TESTNET("ec2-34-228-10-162.compute-1.amazonaws.com"),
|
|
ZCASH_TESTNET("lightwalletd.z.cash")
|
|
}
|