Navigate to main donation screen if user leaves for external app.

This commit is contained in:
Cody Henthorne
2023-11-03 12:56:03 -04:00
parent 20d26ad7ca
commit 528ccc1e9d
6 changed files with 28 additions and 18 deletions

View File

@@ -286,9 +286,7 @@ class GiftFlowConfirmationFragment :
override fun onProcessorActionProcessed() = Unit
override fun onUserCancelledPaymentFlow() {
findNavController().popBackStack(R.id.giftFlowConfirmationFragment, false)
}
override fun onUserLaunchedAnExternalApplication() = Unit
override fun navigateToDonationPending(gatewayRequest: GatewayRequest) = error("Unsupported operation")
}

View File

@@ -466,9 +466,7 @@ class DonateToSignalFragment :
viewModel.refreshActiveSubscription()
}
override fun onUserCancelledPaymentFlow() {
findNavController().popBackStack(R.id.donateToSignalFragment, false)
}
override fun onUserLaunchedAnExternalApplication() = Unit
override fun navigateToDonationPending(gatewayRequest: GatewayRequest) {
findNavController().safeNavigate(DonateToSignalFragmentDirections.actionDonateToSignalFragmentToDonationPendingBottomSheet(gatewayRequest))

View File

@@ -282,7 +282,7 @@ class DonationCheckoutDelegate(
if (throwable is DonationError.UserLaunchedExternalApplication) {
Log.d(TAG, "User launched an external application.", true)
errorHandlerCallback?.onUserLaunchedAnExternalApplication()
return
}
@@ -330,7 +330,7 @@ class DonationCheckoutDelegate(
}
interface ErrorHandlerCallback {
fun onUserCancelledPaymentFlow()
fun onUserLaunchedAnExternalApplication()
fun navigateToDonationPending(gatewayRequest: GatewayRequest)
}

View File

@@ -35,6 +35,7 @@ class Stripe3DSDialogFragment : DialogFragment(R.layout.donation_webview_fragmen
}
val binding by ViewBinderDelegate(DonationWebviewFragmentBinding::bind) {
it.webView.webViewClient = WebViewClient()
it.webView.clearCache(true)
it.webView.clearHistory()
}
@@ -78,14 +79,13 @@ class Stripe3DSDialogFragment : DialogFragment(R.layout.donation_webview_fragmen
}
private fun handleLaunchExternal(intent: Intent) {
startActivity(intent)
SignalStore.donationsValues().setPending3DSData(args.stripe3DSData)
result = bundleOf(
LAUNCHED_EXTERNAL to true
)
startActivity(intent)
dismissAllowingStateLoss()
}

View File

@@ -43,6 +43,8 @@ import androidx.core.os.bundleOf
import androidx.fragment.app.setFragmentResult
import androidx.fragment.app.setFragmentResultListener
import androidx.fragment.app.viewModels
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import androidx.navigation.navGraphViewModels
@@ -156,13 +158,15 @@ class BankTransferDetailsFragment : ComposeFragment(), DonationCheckoutDelegate.
)
}
override fun onUserCancelledPaymentFlow() = Unit
override fun onUserLaunchedAnExternalApplication() = Unit
override fun navigateToDonationPending(gatewayRequest: GatewayRequest) {
findNavController().popBackStack()
findNavController().popBackStack()
setFragmentResult(BankTransferRequestKeys.PENDING_KEY, bundleOf(BankTransferRequestKeys.PENDING_KEY to gatewayRequest))
viewLifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
findNavController().popBackStack(R.id.donateToSignalFragment, false)
}
})
}
}

View File

@@ -42,6 +42,8 @@ import androidx.core.os.bundleOf
import androidx.fragment.app.setFragmentResult
import androidx.fragment.app.setFragmentResultListener
import androidx.fragment.app.viewModels
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import androidx.navigation.navGraphViewModels
@@ -147,13 +149,21 @@ class IdealTransferDetailsFragment : ComposeFragment(), DonationCheckoutDelegate
)
}
override fun onUserCancelledPaymentFlow() = Unit
override fun onUserLaunchedAnExternalApplication() {
viewLifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
findNavController().popBackStack(R.id.donateToSignalFragment, true)
}
})
}
override fun navigateToDonationPending(gatewayRequest: GatewayRequest) {
findNavController().popBackStack()
findNavController().popBackStack()
setFragmentResult(BankTransferRequestKeys.PENDING_KEY, bundleOf(BankTransferRequestKeys.PENDING_KEY to gatewayRequest))
viewLifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
findNavController().popBackStack(R.id.donateToSignalFragment, false)
}
})
}
}