diff --git a/core/src/main/java/net/ivpn/core/v2/captcha/CaptchaFragment.kt b/core/src/main/java/net/ivpn/core/v2/captcha/CaptchaFragment.kt index b6f2d9588..35e3dc791 100644 --- a/core/src/main/java/net/ivpn/core/v2/captcha/CaptchaFragment.kt +++ b/core/src/main/java/net/ivpn/core/v2/captcha/CaptchaFragment.kt @@ -155,6 +155,7 @@ class CaptchaFragment : Fragment(), LoginNavigator { } override fun openSessionLimitReachedDialogue(error: SessionErrorResponse) { + viewModel.sessionError = error setNavigationResultBoolean(true, "session_limit_dialogue") findNavController().popBackStack() } diff --git a/core/src/main/java/net/ivpn/core/v2/login/LoginFragment.kt b/core/src/main/java/net/ivpn/core/v2/login/LoginFragment.kt index 7ed36a252..9fcc772c0 100644 --- a/core/src/main/java/net/ivpn/core/v2/login/LoginFragment.kt +++ b/core/src/main/java/net/ivpn/core/v2/login/LoginFragment.kt @@ -41,6 +41,7 @@ import net.ivpn.core.IVPNApplication import net.ivpn.core.R import net.ivpn.core.common.billing.addfunds.Plan import net.ivpn.core.common.extension.findNavControllerSafely +import net.ivpn.core.common.extension.getNavigationResultBoolean import net.ivpn.core.common.extension.navigate import net.ivpn.core.databinding.FragmentLoginBinding import net.ivpn.core.rest.data.session.SessionErrorResponse @@ -154,6 +155,11 @@ class LoginFragment : Fragment(), LoginNavigator, binding.contentLayout.qrCode.setOnClickListener { openQRScanner() } + getNavigationResultBoolean("session_limit_dialogue")?.observe(viewLifecycleOwner) { + if (it) { + viewModel.sessionError?.let { it1 -> openSessionLimitReachedDialogue(it1) } + } + } } private fun initToolbar() { diff --git a/core/src/main/java/net/ivpn/core/v2/login/LoginViewModel.kt b/core/src/main/java/net/ivpn/core/v2/login/LoginViewModel.kt index 6d43b3b3d..e9b88cf4f 100644 --- a/core/src/main/java/net/ivpn/core/v2/login/LoginViewModel.kt +++ b/core/src/main/java/net/ivpn/core/v2/login/LoginViewModel.kt @@ -76,6 +76,8 @@ class LoginViewModel @Inject constructor( var pendingCaptcha: String? = null var pending2FAToken: String? = null + var sessionError: SessionErrorResponse? = null + var tfaFocusListener = View.OnFocusChangeListener { _, hasFocus -> if (hasFocus) { tfaInputState.get()?.let { diff --git a/core/src/main/java/net/ivpn/core/v2/tfa/TFAFragment.kt b/core/src/main/java/net/ivpn/core/v2/tfa/TFAFragment.kt index 03acdd942..1f32e7a64 100644 --- a/core/src/main/java/net/ivpn/core/v2/tfa/TFAFragment.kt +++ b/core/src/main/java/net/ivpn/core/v2/tfa/TFAFragment.kt @@ -165,6 +165,7 @@ class TFAFragment : Fragment(), LoginNavigator { } override fun openSessionLimitReachedDialogue(error: SessionErrorResponse) { + viewModel.sessionError = error setNavigationResultBoolean(true, "session_limit_dialogue") findNavController().popBackStack() }