2020-06-10 00:08:19 -07:00
|
|
|
package cash.z.ecc.android.sdk.demoapp.demos.getaddress
|
2019-10-21 03:17:07 -07:00
|
|
|
|
2020-08-13 18:08:01 -07:00
|
|
|
import android.os.Bundle
|
2019-10-21 03:17:07 -07:00
|
|
|
import android.view.LayoutInflater
|
2020-08-13 18:08:01 -07:00
|
|
|
import cash.z.ecc.android.bip39.Mnemonics
|
|
|
|
import cash.z.ecc.android.bip39.toSeed
|
2020-06-10 00:08:19 -07:00
|
|
|
import cash.z.ecc.android.sdk.Initializer
|
|
|
|
import cash.z.ecc.android.sdk.demoapp.App
|
|
|
|
import cash.z.ecc.android.sdk.demoapp.BaseDemoFragment
|
|
|
|
import cash.z.ecc.android.sdk.demoapp.databinding.FragmentGetAddressBinding
|
2019-10-21 03:17:07 -07:00
|
|
|
|
2020-02-27 00:25:07 -08:00
|
|
|
/**
|
|
|
|
* Displays the address associated with the seed defined by the default config. To modify the seed
|
|
|
|
* that is used, update the `DemoConfig.seedWords` value.
|
|
|
|
*/
|
2019-10-21 03:17:07 -07:00
|
|
|
class GetAddressFragment : BaseDemoFragment<FragmentGetAddressBinding>() {
|
|
|
|
|
2020-08-13 18:08:01 -07:00
|
|
|
private lateinit var initializer: Initializer
|
|
|
|
private lateinit var viewingKey: String
|
|
|
|
private lateinit var seed: ByteArray
|
2020-02-25 23:43:27 -08:00
|
|
|
|
2020-08-13 18:08:01 -07:00
|
|
|
/**
|
|
|
|
* Initialize the required values that would normally live outside the demo but are repeated
|
|
|
|
* here for completeness so that each demo file can serve as a standalone example.
|
|
|
|
*/
|
|
|
|
fun setup() {
|
|
|
|
// defaults to the value of `DemoConfig.seedWords` but can also be set by the user
|
|
|
|
var seedPhrase = sharedViewModel.seedPhrase.value
|
2019-10-21 03:17:07 -07:00
|
|
|
|
2020-08-13 18:08:01 -07:00
|
|
|
// Use a BIP-39 library to convert a seed phrase into a byte array. Most wallets already
|
|
|
|
// have the seed stored
|
|
|
|
seed = Mnemonics.MnemonicCode(seedPhrase).toSeed()
|
2019-10-21 03:17:07 -07:00
|
|
|
|
2020-08-13 18:08:01 -07:00
|
|
|
// the initializer loads rust libraries and helps with configuration
|
|
|
|
initializer = Initializer(App.instance)
|
|
|
|
|
|
|
|
// demonstrate deriving viewing keys for five accounts but only take the first one
|
|
|
|
viewingKey = initializer.deriveViewingKeys(seed).first()
|
2019-10-21 03:17:07 -07:00
|
|
|
}
|
|
|
|
|
2020-08-13 18:08:01 -07:00
|
|
|
fun displayAddress() {
|
|
|
|
// alternatively, `deriveAddress` can take the seed as a parameter instead
|
|
|
|
val address = initializer.deriveAddress(viewingKey)
|
2020-02-25 23:43:27 -08:00
|
|
|
binding.textInfo.text = address
|
2019-10-21 03:17:07 -07:00
|
|
|
}
|
|
|
|
|
2020-08-13 18:08:01 -07:00
|
|
|
// TODO: show an example with the synchronizer
|
|
|
|
|
|
|
|
//
|
|
|
|
// Android Lifecycle overrides
|
|
|
|
//
|
|
|
|
|
|
|
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
|
|
|
super.onActivityCreated(savedInstanceState)
|
|
|
|
setup()
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onResume() {
|
|
|
|
super.onResume()
|
|
|
|
displayAddress()
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
// Base Fragment overrides
|
|
|
|
//
|
|
|
|
|
2020-02-25 23:43:27 -08:00
|
|
|
override fun onActionButtonClicked() {
|
2020-08-13 18:08:01 -07:00
|
|
|
copyToClipboard(initializer.deriveAddress(viewingKey))
|
2019-10-21 03:17:07 -07:00
|
|
|
}
|
2020-02-25 23:43:27 -08:00
|
|
|
|
2020-08-13 18:08:01 -07:00
|
|
|
override fun inflateBinding(layoutInflater: LayoutInflater): FragmentGetAddressBinding =
|
|
|
|
FragmentGetAddressBinding.inflate(layoutInflater)
|
|
|
|
|
2020-06-09 20:28:21 -07:00
|
|
|
}
|