fix (library tab): save and restore tab selection (#798)

Co-authored-by: Funny-Pen-7005 <Funny-Pen-7005>
This commit is contained in:
Funny-Pen-7005 2023-12-09 19:25:13 +05:30 committed by GitHub
parent 6f3a8c1cd2
commit 2d87983eca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 4 deletions

View file

@ -7,7 +7,6 @@ import android.content.res.Configuration
import android.os.Bundle import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.util.Log
import android.util.TypedValue import android.util.TypedValue
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -16,7 +15,6 @@ import android.view.ViewGroup.FOCUS_AFTER_DESCENDANTS
import android.view.ViewGroup.FOCUS_BLOCK_DESCENDANTS import android.view.ViewGroup.FOCUS_BLOCK_DESCENDANTS
import android.view.animation.AlphaAnimation import android.view.animation.AlphaAnimation
import android.widget.ImageView import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.annotation.StringRes import androidx.annotation.StringRes
@ -25,9 +23,8 @@ import androidx.core.view.allViews
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.viewpager2.widget.ViewPager2
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.appbar.AppBarLayout import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import com.lagradost.cloudstream3.APIHolder import com.lagradost.cloudstream3.APIHolder
@ -452,6 +449,20 @@ class LibraryFragment : Fragment() {
binding?.searchBar?.setExpanded(true) binding?.searchBar?.setExpanded(true)
} }
}.attach() }.attach()
binding?.libraryTabLayout?.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
val position = tab?.position ?: 0
libraryViewModel.setTabPosition(position)
}
override fun onTabUnselected(tab: TabLayout.Tab?) = Unit
override fun onTabReselected(tab: TabLayout.Tab?) = Unit
})
libraryViewModel.getTabPosition().observe(viewLifecycleOwner) { position ->
binding?.libraryTabLayout?.getTabAt(position)?.select()
}
} }
} }

View file

@ -28,6 +28,16 @@ enum class ListSorting(@StringRes val stringRes: Int) {
const val LAST_SYNC_API_KEY = "last_sync_api" const val LAST_SYNC_API_KEY = "last_sync_api"
class LibraryViewModel : ViewModel() { class LibraryViewModel : ViewModel() {
private val tabPositionLiveData = MutableLiveData<Int>()
fun setTabPosition(position: Int) {
tabPositionLiveData.value = position
}
fun getTabPosition(): LiveData<Int> {
return tabPositionLiveData
}
private val _pages: MutableLiveData<Resource<List<SyncAPI.Page>>> = MutableLiveData(null) private val _pages: MutableLiveData<Resource<List<SyncAPI.Page>>> = MutableLiveData(null)
val pages: LiveData<Resource<List<SyncAPI.Page>>> = _pages val pages: LiveData<Resource<List<SyncAPI.Page>>> = _pages