From 18cd9e58f9aca0ed5a08b7d0d24091e3697a14db Mon Sep 17 00:00:00 2001 From: Emily Kager Date: Thu, 30 May 2019 15:05:34 -0700 Subject: [PATCH] Fixes Crash: Pop up to Browser Fragment if exists when coming from Search --- app/src/main/java/org/mozilla/fenix/HomeActivity.kt | 13 ++++++++++--- .../org/mozilla/fenix/browser/BrowserFragment.kt | 9 ++++----- app/src/main/res/navigation/nav_graph.xml | 3 ++- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 8944a8183..75e107d66 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -187,8 +187,13 @@ open class HomeActivity : AppCompatActivity() { val directions = when (from) { BrowserDirection.FromGlobal -> NavGraphDirections.actionGlobalBrowser(customTabSessionId) BrowserDirection.FromHome -> HomeFragmentDirections.actionHomeFragmentToBrowserFragment(customTabSessionId) - BrowserDirection.FromSearch -> - SearchFragmentDirections.actionSearchFragmentToBrowserFragment(customTabSessionId) + BrowserDirection.FromSearch -> { + if (!navHost.navController.popBackStack(R.id.browserFragment, false)) { + SearchFragmentDirections.actionSearchFragmentToBrowserFragment(customTabSessionId) + } else { + null + } + } BrowserDirection.FromSettings -> SettingsFragmentDirections.actionSettingsFragmentToBrowserFragment(customTabSessionId) BrowserDirection.FromBookmarks -> @@ -208,7 +213,9 @@ open class HomeActivity : AppCompatActivity() { if (sessionObserver == null) sessionObserver = subscribeToSessions() - navHost.navController.navigate(directions) + directions?.let { + navHost.navController.navigate(it) + } } private fun load(searchTermOrURL: String, newTab: Boolean, engine: SearchEngine?, forceSearch: Boolean) { diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt index abcd0402c..70db8d0cf 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -120,6 +120,10 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) postponeEnterTransition() + sharedElementEnterTransition = + TransitionInflater.from(context).inflateTransition(android.R.transition.move).setDuration( + SHARED_TRANSITION_MS + ) job = Job() } @@ -180,11 +184,6 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope { ) } } - - sharedElementEnterTransition = - TransitionInflater.from(context).inflateTransition(android.R.transition.move).setDuration( - SHARED_TRANSITION_MS - ) startPostponedEnterTransition() QuickActionComponent( diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index b596db791..b3b2b3b1b 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -58,7 +58,8 @@ + app:popUpTo="@id/searchFragment" + app:popUpToInclusive="true" />