feat(ui): save scroll position in trends

This commit is contained in:
IndusAryan 2024-01-19 16:00:52 +05:30 committed by Bnyro
parent e8b911c6fa
commit c8e921de16
2 changed files with 11 additions and 0 deletions

View File

@ -7,6 +7,8 @@ import android.view.View
import android.view.ViewGroup
import androidx.core.view.isGone
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import com.github.libretube.R
import com.github.libretube.databinding.FragmentTrendsBinding
import com.github.libretube.ui.activities.SettingsActivity
@ -39,6 +41,7 @@ class TrendsFragment : DynamicLayoutManagerFragment() {
viewModel.trendingVideos.observe(viewLifecycleOwner) { videos ->
if (videos == null) return@observe
binding.recview.layoutManager?.onRestoreInstanceState(viewModel.recyclerViewState)
binding.recview.adapter = VideosAdapter(videos.toMutableList())
binding.homeRefresh.isRefreshing = false
binding.progressBar.isGone = true
@ -58,6 +61,12 @@ class TrendsFragment : DynamicLayoutManagerFragment() {
viewModel.fetchTrending(requireContext())
}
viewLifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver {
override fun onDestroy(owner: LifecycleOwner) {
viewModel.recyclerViewState = _binding?.recview?.layoutManager?.onSaveInstanceState()
}
})
viewModel.fetchTrending(requireContext())
}

View File

@ -1,6 +1,7 @@
package com.github.libretube.ui.models
import android.content.Context
import android.os.Parcelable
import android.util.Log
import android.widget.Toast
import androidx.lifecycle.MutableLiveData
@ -20,6 +21,7 @@ import java.io.IOException
class TrendsViewModel: ViewModel() {
val trendingVideos = MutableLiveData<List<StreamItem>>()
var recyclerViewState: Parcelable? = null
fun fetchTrending(context: Context) {
viewModelScope.launch {