summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2023-04-18 13:37:40 -0300
committerTorsten Grote <t@grobox.de>2023-04-18 13:37:40 -0300
commit62c86e421394492ff64cba0b65728817513254c9 (patch)
tree28df61af27aad300792ea5f9ce6336d956b0eb8e
parent6ca47955402d8557b00b0d334b3a60ecd071368b (diff)
downloadtaler-android-62c86e421394492ff64cba0b65728817513254c9.tar.gz
taler-android-62c86e421394492ff64cba0b65728817513254c9.tar.bz2
taler-android-62c86e421394492ff64cba0b65728817513254c9.zip
[wallet] navigate back to main screen after outgoing push is complete
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt16
1 files changed, 16 insertions, 0 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
index 0aa029b..255aee5 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
@@ -20,10 +20,12 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.activity.OnBackPressedCallback
import androidx.compose.ui.platform.ComposeView
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.navigation.findNavController
+import androidx.navigation.fragment.findNavController
import net.taler.common.Amount
import net.taler.wallet.MainViewModel
import net.taler.wallet.R
@@ -34,6 +36,13 @@ class OutgoingPushFragment : Fragment() {
private val model: MainViewModel by activityViewModels()
private val peerManager get() = model.peerManager
+ // hacky way to change back action until we have navigation for compose
+ private val backPressedCallback = object : OnBackPressedCallback(false) {
+ override fun handleOnBackPressed() {
+ findNavController().navigate(R.id.action_nav_peer_push_to_nav_main)
+ }
+ }
+
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -42,11 +51,17 @@ class OutgoingPushFragment : Fragment() {
val amount = arguments?.getString("amount")?.let {
Amount.fromJSONString(it)
} ?: error("no amount passed")
+
+ requireActivity().onBackPressedDispatcher.addCallback(
+ viewLifecycleOwner, backPressedCallback
+ )
+
return ComposeView(requireContext()).apply {
setContent {
TalerSurface {
when (val state = peerManager.pushState.collectAsStateLifecycleAware().value) {
is OutgoingIntro, OutgoingChecking, is OutgoingChecked -> {
+ backPressedCallback.isEnabled = false
OutgoingPushIntroComposable(
state = state,
amount = amount,
@@ -54,6 +69,7 @@ class OutgoingPushFragment : Fragment() {
)
}
OutgoingCreating, is OutgoingResponse, is OutgoingError -> {
+ backPressedCallback.isEnabled = true
OutgoingPushResultComposable(state) {
findNavController().navigate(R.id.action_nav_peer_push_to_nav_main)
}