Leveraged new ability to safely inject Synchronizers.
This was a key benefit of the refactor for #39.
This commit is contained in:
parent
ed7577f4a8
commit
69b32f14b9
|
@ -8,19 +8,21 @@ import androidx.paging.PagedList
|
|||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import cash.z.ecc.android.R
|
||||
import cash.z.ecc.android.databinding.FragmentDetailBinding
|
||||
import cash.z.ecc.android.di.viewmodel.viewModel
|
||||
import cash.z.ecc.android.ext.onClick
|
||||
import cash.z.ecc.android.ext.onClickNavUp
|
||||
import cash.z.ecc.android.feedback.FeedbackFile
|
||||
import cash.z.ecc.android.ui.base.BaseFragment
|
||||
import cash.z.wallet.sdk.entity.ConfirmedTransaction
|
||||
import cash.z.wallet.sdk.ext.collectWith
|
||||
import cash.z.wallet.sdk.ext.twig
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import kotlinx.coroutines.launch
|
||||
import okio.Okio
|
||||
|
||||
|
||||
class WalletDetailFragment : BaseFragment<FragmentDetailBinding>() {
|
||||
|
||||
private val viewModel: WalletDetailViewModel by viewModel()
|
||||
|
||||
private lateinit var adapter: TransactionAdapter<ConfirmedTransaction>
|
||||
|
||||
override fun inflate(inflater: LayoutInflater): FragmentDetailBinding =
|
||||
|
@ -50,9 +52,7 @@ class WalletDetailFragment : BaseFragment<FragmentDetailBinding>() {
|
|||
binding.recyclerTransactions.layoutManager =
|
||||
LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
|
||||
adapter = TransactionAdapter()
|
||||
resumedScope.launch {
|
||||
mainActivity?.synchronizer?.clearedTransactions?.collect { onTransactionsUpdated(it) }
|
||||
}
|
||||
viewModel.transactions.collectWith(resumedScope) { onTransactionsUpdated(it) }
|
||||
binding.recyclerTransactions.adapter = adapter
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
package cash.z.ecc.android.ui.detail
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import cash.z.wallet.sdk.Synchronizer
|
||||
import cash.z.wallet.sdk.ext.twig
|
||||
import javax.inject.Inject
|
||||
|
||||
class WalletDetailViewModel @Inject constructor() : ViewModel() {
|
||||
|
||||
@Inject
|
||||
lateinit var synchronizer: Synchronizer
|
||||
|
||||
val transactions get() = synchronizer.clearedTransactions
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
twig("WalletDetailViewModel cleared!")
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ import android.view.View
|
|||
import android.widget.TextView
|
||||
import cash.z.android.qrecycler.QRecycler
|
||||
import cash.z.ecc.android.databinding.FragmentReceiveBinding
|
||||
import cash.z.ecc.android.di.viewmodel.viewModel
|
||||
import cash.z.ecc.android.ext.onClickNavUp
|
||||
import cash.z.ecc.android.ui.base.BaseFragment
|
||||
import cash.z.ecc.android.ui.util.AddressPartNumberSpan
|
||||
|
@ -19,13 +20,16 @@ import kotlinx.coroutines.launch
|
|||
import kotlin.math.roundToInt
|
||||
|
||||
class ReceiveFragment : BaseFragment<FragmentReceiveBinding>() {
|
||||
override fun inflate(inflater: LayoutInflater): FragmentReceiveBinding =
|
||||
FragmentReceiveBinding.inflate(inflater)
|
||||
|
||||
private val viewModel: ReceiveViewModel by viewModel()
|
||||
|
||||
lateinit var qrecycler: QRecycler
|
||||
|
||||
lateinit var addressParts: Array<TextView>
|
||||
|
||||
override fun inflate(inflater: LayoutInflater): FragmentReceiveBinding =
|
||||
FragmentReceiveBinding.inflate(inflater)
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
addressParts = arrayOf(
|
||||
|
@ -49,9 +53,7 @@ class ReceiveFragment : BaseFragment<FragmentReceiveBinding>() {
|
|||
override fun onResume() {
|
||||
super.onResume()
|
||||
resumedScope.launch {
|
||||
mainActivity?.synchronizer?.getAddress()?.let { address ->
|
||||
onAddressLoaded(address)
|
||||
}
|
||||
onAddressLoaded(viewModel.getAddress())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
package cash.z.ecc.android.ui.receive
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import cash.z.wallet.sdk.Synchronizer
|
||||
import cash.z.wallet.sdk.ext.twig
|
||||
import javax.inject.Inject
|
||||
|
||||
class ReceiveViewModel @Inject constructor() : ViewModel() {
|
||||
|
||||
@Inject
|
||||
lateinit var synchronizer: Synchronizer
|
||||
|
||||
suspend fun getAddress(): String = synchronizer.getAddress()
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
twig("WalletDetailViewModel cleared!")
|
||||
}
|
||||
}
|
|
@ -46,7 +46,7 @@ class SendFinalFragment : BaseFragment<FragmentSendFinalBinding>() {
|
|||
override fun onAttach(context: Context) {
|
||||
super.onAttach(context)
|
||||
mainActivity?.apply {
|
||||
sendViewModel.send(synchronizer).onEach {
|
||||
sendViewModel.send().onEach {
|
||||
onPendingTxUpdated(it)
|
||||
}.launchIn(mainActivity?.lifecycleScope!!)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue