From 29b3f09d8a31baa6b560de0f8287b495f86e8f39 Mon Sep 17 00:00:00 2001 From: Nicholas Tinsley Date: Fri, 12 Apr 2024 17:49:37 -0400 Subject: [PATCH] Catch possible ISE at end of re-registration. --- .../fragments/ReRegisterWithPinFragment.kt | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/ReRegisterWithPinFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/ReRegisterWithPinFragment.kt index 6069288b7c..bab50b5ccb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/ReRegisterWithPinFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/ReRegisterWithPinFragment.kt @@ -7,6 +7,7 @@ import android.view.inputmethod.EditorInfo import android.widget.Toast import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels +import androidx.navigation.Navigation import androidx.navigation.fragment.findNavController import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.signal.core.util.concurrent.LifecycleDisposable @@ -119,7 +120,30 @@ class ReRegisterWithPinFragment : LoggingFragment(R.layout.pin_restore_entry_fra .subscribe { processor -> if (processor.hasResult()) { Log.i(TAG, "Successfully re-registered via skip flow") - findNavController().safeNavigate(R.id.action_reRegisterWithPinFragment_to_registrationCompletePlaceHolderFragment) + try { + findNavController().safeNavigate(R.id.action_reRegisterWithPinFragment_to_registrationCompletePlaceHolderFragment) + return@subscribe + } catch (ise: IllegalStateException) { + Log.w(TAG, "Could not get parent activity fragment manager!") + } + + try { + val hostActivity = activity + if (hostActivity != null) { + Navigation.findNavController(hostActivity, R.id.nav_host_fragment).safeNavigate(R.id.action_reRegisterWithPinFragment_to_registrationCompletePlaceHolderFragment) + return@subscribe + } else { + Log.w(TAG, "Could not get parent activity!") + } + } catch (ise: IllegalStateException) { + Log.w(TAG, "Could not find navigation host fragment!") + } + + activity?.let { + Log.w(TAG, "Could not navigate to registration complete. Finishing activity gracefully.") + it.finish() + } + return@subscribe }