diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index 2048af745..e1779e89a 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -144,8 +144,14 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { } postponeEnterTransition() + + ActionBusFactory.get(this).logMergedObservables() + val activity = activity as HomeActivity + ThemeManager.applyStatusBarTheme(activity.window, activity.themeManager, activity) + val listener = object : ViewTreeObserver.OnPreDrawListener { override fun onPreDraw(): Boolean { + restoreLayoutState() startPostponedEnterTransition() sessionControlComponent.view.viewTreeObserver.removeOnPreDrawListener(this) return true @@ -153,13 +159,22 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { } sessionControlComponent.view.viewTreeObserver.addOnPreDrawListener(listener) - ActionBusFactory.get(this).logMergedObservables() - val activity = activity as HomeActivity - ThemeManager.applyStatusBarTheme(activity.window, activity.themeManager, activity) - return view } + private fun restoreLayoutState() { + val homeViewModel = activity?.run { + ViewModelProviders.of(this).get(HomeScreenViewModel::class.java) + } + homeViewModel?.layoutManagerState?.also { parcelable -> + sessionControlComponent.view.layoutManager?.onRestoreInstanceState(parcelable) + } + val progress = homeViewModel?.motionLayoutProgress + homeLayout?.progress = + if (progress ?: 0F > MOTION_LAYOUT_PROGRESS_ROUND_POINT) 1.0f else 0f + homeViewModel?.layoutManagerState = null + } + @SuppressWarnings("LongMethod") override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -250,7 +265,6 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { is SessionControlAction.Tab -> handleTabAction(it.action) is SessionControlAction.Collection -> handleCollectionAction(it.action) is SessionControlAction.Onboarding -> handleOnboardingAction(it.action) - is SessionControlAction.ReloadData -> { } } } } diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlComponent.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlComponent.kt index b695b3f96..76d555d7a 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlComponent.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlComponent.kt @@ -124,7 +124,6 @@ sealed class SessionControlAction : Action { data class Tab(val action: TabAction) : SessionControlAction() data class Collection(val action: CollectionAction) : SessionControlAction() data class Onboarding(val action: OnboardingAction) : SessionControlAction() - object ReloadData : SessionControlAction() } fun Observer.onNext(tabAction: TabAction) { diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlUIView.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlUIView.kt index 376fd4e71..cd4a26e4f 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlUIView.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlUIView.kt @@ -152,6 +152,5 @@ class SessionControlUIView( override fun updateView() = Consumer { sessionControlAdapter.submitList(it.toAdapterList()) - actionEmitter.onNext(SessionControlAction.ReloadData) } } diff --git a/app/src/main/res/layout/collection_header.xml b/app/src/main/res/layout/collection_header.xml index e42f23d00..37080d47a 100644 --- a/app/src/main/res/layout/collection_header.xml +++ b/app/src/main/res/layout/collection_header.xml @@ -8,7 +8,7 @@ android:id="@+id/collections_header" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="20dp"> + android:layout_marginBottom="8dp">