From 06714c8e451df5aad8a08ac25bb9d16668ff5e7b Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Thu, 6 Jul 2023 08:54:06 +0530 Subject: [PATCH] Use ViewModel extension in the main activity --- .../libretube/ui/activities/MainActivity.kt | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/activities/MainActivity.kt b/app/src/main/java/com/github/libretube/ui/activities/MainActivity.kt index 734f16575..51d0678de 100644 --- a/app/src/main/java/com/github/libretube/ui/activities/MainActivity.kt +++ b/app/src/main/java/com/github/libretube/ui/activities/MainActivity.kt @@ -11,12 +11,12 @@ import android.view.View import android.view.ViewGroup import android.widget.ScrollView import androidx.activity.addCallback +import androidx.activity.viewModels import androidx.appcompat.widget.SearchView import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.os.bundleOf import androidx.core.view.children import androidx.core.widget.NestedScrollView -import androidx.lifecycle.ViewModelProvider import androidx.navigation.NavController import androidx.navigation.findNavController import androidx.navigation.fragment.NavHostFragment @@ -47,12 +47,17 @@ import com.github.libretube.ui.tools.SleepTimer import com.google.android.material.elevation.SurfaceColors class MainActivity : BaseActivity() { - lateinit var binding: ActivityMainBinding - lateinit var navController: NavController + lateinit var searchView: SearchView + private lateinit var searchItem: MenuItem + 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 { PreferenceHelper.getBoolean( PreferenceKeys.AUTO_ROTATION, @@ -60,9 +65,6 @@ class MainActivity : BaseActivity() { ) } - lateinit var searchView: SearchView - private lateinit var searchItem: MenuItem - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -153,8 +155,6 @@ class MainActivity : BaseActivity() { setupSubscriptionsBadge() - val playerViewModel = ViewModelProvider(this)[PlayerViewModel::class.java] - // new way of handling back presses onBackPressedDispatcher.addCallback { if (playerViewModel.isFullscreen.value == true) { @@ -251,14 +251,11 @@ class MainActivity : BaseActivity() { return } - val subscriptionsViewModel = ViewModelProvider(this)[SubscriptionsViewModel::class.java] subscriptionsViewModel.fetchSubscriptions() - subscriptionsViewModel.videoFeed.observe(this) { - val lastSeenVideoId = PreferenceHelper.getLastSeenVideoId() - val lastSeenVideoIndex = subscriptionsViewModel.videoFeed.value?.indexOfFirst { - lastSeenVideoId == it.url?.toID() - } ?: return@observe + subscriptionsViewModel.videoFeed.observe(this) { feed -> + val lastSeenVideoIndex = feed.orEmpty() + .indexOfFirst { PreferenceHelper.getLastSeenVideoId() == it.url?.toID() } if (lastSeenVideoIndex < 1) return@observe binding.bottomNav.getOrCreateBadge(R.id.subscriptionsFragment).apply { number = lastSeenVideoIndex @@ -310,8 +307,6 @@ class MainActivity : BaseActivity() { this.searchItem = searchItem searchView = searchItem.actionView as SearchView - val searchViewModel = ViewModelProvider(this)[SearchViewModel::class.java] - searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextSubmit(query: String?): Boolean { 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 requestedOrientation = if (autoRotationEnabled) { ActivityInfo.SCREEN_ORIENTATION_USER