Use ViewModel extension in the main activity

This commit is contained in:
Isira Seneviratne 2023-07-06 08:54:06 +05:30
parent 5ca10ace18
commit 06714c8e45

View File

@ -11,12 +11,12 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ScrollView import android.widget.ScrollView
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.activity.viewModels
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.content.pm.ShortcutManagerCompat
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.children import androidx.core.view.children
import androidx.core.widget.NestedScrollView import androidx.core.widget.NestedScrollView
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.findNavController import androidx.navigation.findNavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
@ -47,12 +47,17 @@ import com.github.libretube.ui.tools.SleepTimer
import com.google.android.material.elevation.SurfaceColors import com.google.android.material.elevation.SurfaceColors
class MainActivity : BaseActivity() { class MainActivity : BaseActivity() {
lateinit var binding: ActivityMainBinding lateinit var binding: ActivityMainBinding
lateinit var navController: NavController lateinit var navController: NavController
lateinit var searchView: SearchView
private lateinit var searchItem: MenuItem
private var startFragmentId = R.id.homeFragment private var startFragmentId = R.id.homeFragment
private val playerViewModel: PlayerViewModel by viewModels()
private val searchViewModel: SearchViewModel by viewModels()
private val subscriptionsViewModel: SubscriptionsViewModel by viewModels()
val autoRotationEnabled: Boolean by lazy { val autoRotationEnabled: Boolean by lazy {
PreferenceHelper.getBoolean( PreferenceHelper.getBoolean(
PreferenceKeys.AUTO_ROTATION, PreferenceKeys.AUTO_ROTATION,
@ -60,9 +65,6 @@ class MainActivity : BaseActivity() {
) )
} }
lateinit var searchView: SearchView
private lateinit var searchItem: MenuItem
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -153,8 +155,6 @@ class MainActivity : BaseActivity() {
setupSubscriptionsBadge() setupSubscriptionsBadge()
val playerViewModel = ViewModelProvider(this)[PlayerViewModel::class.java]
// new way of handling back presses // new way of handling back presses
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
if (playerViewModel.isFullscreen.value == true) { if (playerViewModel.isFullscreen.value == true) {
@ -251,14 +251,11 @@ class MainActivity : BaseActivity() {
return return
} }
val subscriptionsViewModel = ViewModelProvider(this)[SubscriptionsViewModel::class.java]
subscriptionsViewModel.fetchSubscriptions() subscriptionsViewModel.fetchSubscriptions()
subscriptionsViewModel.videoFeed.observe(this) { subscriptionsViewModel.videoFeed.observe(this) { feed ->
val lastSeenVideoId = PreferenceHelper.getLastSeenVideoId() val lastSeenVideoIndex = feed.orEmpty()
val lastSeenVideoIndex = subscriptionsViewModel.videoFeed.value?.indexOfFirst { .indexOfFirst { PreferenceHelper.getLastSeenVideoId() == it.url?.toID() }
lastSeenVideoId == it.url?.toID()
} ?: return@observe
if (lastSeenVideoIndex < 1) return@observe if (lastSeenVideoIndex < 1) return@observe
binding.bottomNav.getOrCreateBadge(R.id.subscriptionsFragment).apply { binding.bottomNav.getOrCreateBadge(R.id.subscriptionsFragment).apply {
number = lastSeenVideoIndex number = lastSeenVideoIndex
@ -310,8 +307,6 @@ class MainActivity : BaseActivity() {
this.searchItem = searchItem this.searchItem = searchItem
searchView = searchItem.actionView as SearchView searchView = searchItem.actionView as SearchView
val searchViewModel = ViewModelProvider(this)[SearchViewModel::class.java]
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean { override fun onQueryTextSubmit(query: String?): Boolean {
navController.navigate(R.id.searchResultFragment, bundleOf("query" to query)) navController.navigate(R.id.searchResultFragment, bundleOf("query" to query))
@ -486,7 +481,6 @@ class MainActivity : BaseActivity() {
} }
} }
val playerViewModel = ViewModelProvider(this)[PlayerViewModel::class.java]
playerViewModel.isFullscreen.value = false playerViewModel.isFullscreen.value = false
requestedOrientation = if (autoRotationEnabled) { requestedOrientation = if (autoRotationEnabled) {
ActivityInfo.SCREEN_ORIENTATION_USER ActivityInfo.SCREEN_ORIENTATION_USER