Skip to content

Commit

Permalink
Merge pull request #20546 from wordpress-mobile/issue/20523-fix-auto-…
Browse files Browse the repository at this point in the history
…scroll-issues-on-stats

Fix for auto-scrolling issues on stats screen
  • Loading branch information
ravishanker authored Mar 28, 2024
2 parents 569b0a4 + ff4f403 commit 562d46d
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,6 @@ class BaseListUseCase(
private val mutableListSelected = SingleLiveEvent<Unit?>()
val listSelected: LiveData<Unit?> = mutableListSelected

private val mutableScrollTo = MutableLiveData<Event<StatsType>>()
val scrollTo: LiveData<Event<StatsType>> = mutableScrollTo

suspend fun loadData() {
loadData(refresh = false, forced = false)
}
Expand Down Expand Up @@ -124,9 +121,6 @@ class BaseListUseCase(
}
}
}
if (!refresh) {
mutableScrollTo.postValue(Event(visibleTypes.last()))
}
}
} else {
mutableSnackbarMessage.postValue(R.string.stats_site_not_loaded_yet)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver
import androidx.recyclerview.widget.RecyclerView.LayoutManager
import androidx.recyclerview.widget.StaggeredGridLayoutManager
import dagger.hilt.android.AndroidEntryPoint
Expand Down Expand Up @@ -243,7 +242,6 @@ class StatsListFragment : ViewPagerFragment(R.layout.stats_list_fragment) {
viewModel.uiModel.removeObservers(viewLifecycleOwner)
viewModel.navigationTarget.removeObservers(viewLifecycleOwner)
viewModel.listSelected.removeObservers(viewLifecycleOwner)
viewModel.scrollToNewCard.removeObservers(viewLifecycleOwner)
}

viewModel.uiSourceAdded.observe(viewLifecycleOwner) {
Expand Down Expand Up @@ -284,6 +282,8 @@ class StatsListFragment : ViewPagerFragment(R.layout.stats_list_fragment) {
selectedTrafficGranularityManager.getSelectedTrafficGranularity()
)
dateSelector.granularitySpinner.setSelection(selectedGranularityItemPos)

recyclerView.scrollToPosition(0)
}
}

Expand All @@ -295,16 +295,6 @@ class StatsListFragment : ViewPagerFragment(R.layout.stats_list_fragment) {
viewModel.navigationTarget.observeEvent(viewLifecycleOwner) { target -> navigator.navigate(activity, target) }

viewModel.listSelected.observe(viewLifecycleOwner) { viewModel.onListSelected() }

viewModel.scrollToNewCard.observeEvent(viewLifecycleOwner) {
(recyclerView.adapter as? StatsBlockAdapter)?.let { adapter ->
adapter.registerAdapterDataObserver(object : AdapterDataObserver() {
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
layoutManager?.smoothScrollToPosition(recyclerView, null, adapter.itemCount)
}
})
}
}
}

private fun StatsListFragmentBinding.showUiModel(
Expand Down Expand Up @@ -348,15 +338,10 @@ class StatsListFragment : ViewPagerFragment(R.layout.stats_list_fragment) {
adapter = recyclerView.adapter as StatsBlockAdapter
}

val layoutManager = recyclerView.layoutManager
val recyclerViewState = layoutManager?.onSaveInstanceState()
adapter.update(statsState)
recyclerView.scrollToPosition(0)

errorView.statsErrorView.isGone = true
emptyView.statsEmptyView.isGone = true
recyclerView.isVisible = true

layoutManager?.onRestoreInstanceState(recyclerViewState)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import kotlinx.coroutines.delay
import org.wordpress.android.R
import org.wordpress.android.analytics.AnalyticsTracker.Stat
import org.wordpress.android.fluxc.network.utils.StatsGranularity
import org.wordpress.android.fluxc.store.StatsStore
import org.wordpress.android.modules.UI_THREAD
import org.wordpress.android.ui.stats.refresh.DAY_STATS_USE_CASE
import org.wordpress.android.ui.stats.refresh.INSIGHTS_USE_CASE
Expand Down Expand Up @@ -102,8 +101,6 @@ abstract class StatsListViewModel(

val scrollTo = newsCardHandler?.scrollTo

lateinit var scrollToNewCard: LiveData<Event<StatsStore.StatsType>>

override fun onCleared() {
statsUseCase.onCleared()
super.onCleared()
Expand Down Expand Up @@ -174,7 +171,6 @@ abstract class StatsListViewModel(
uiModel = statsUseCase.data.throttle(viewModelScope, distinct = true)
listSelected = statsUseCase.listSelected
navigationTarget = mergeNotNull(statsUseCase.navigationTarget, mutableNavigationTarget)
scrollToNewCard = statsUseCase.scrollTo
mutableUiSourceAdded.call()
}

Expand Down

0 comments on commit 562d46d

Please sign in to comment.