From 9813ff3ed7c661b2f0e391f09b94bbbcaa22a255 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Sun, 21 Aug 2022 22:01:38 +0200 Subject: [PATCH] Fix navigation reset on configuration change For example when rotating --- .../main/java/dev/jdtech/jellyfin/MainActivity.kt | 12 ++++++++++-- .../dev/jdtech/jellyfin/viewmodels/MainViewModel.kt | 7 +++++++ 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/dev/jdtech/jellyfin/viewmodels/MainViewModel.kt diff --git a/app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt b/app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt index ea934785..7a7a7711 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt @@ -4,6 +4,7 @@ import android.app.UiModeManager import android.content.res.Configuration import android.os.Bundle import android.view.View +import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.AppBarConfiguration @@ -15,6 +16,7 @@ import dagger.hilt.android.AndroidEntryPoint import dev.jdtech.jellyfin.database.ServerDatabaseDao import dev.jdtech.jellyfin.databinding.ActivityMainBinding import dev.jdtech.jellyfin.utils.loadDownloadLocation +import dev.jdtech.jellyfin.viewmodels.MainViewModel import javax.inject.Inject @AndroidEntryPoint @@ -23,6 +25,8 @@ class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding private lateinit var uiModeManager: UiModeManager + private val viewModel : MainViewModel by viewModels() + @Inject lateinit var database: ServerDatabaseDao @@ -43,14 +47,18 @@ class MainActivity : AppCompatActivity() { if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) { graph.setStartDestination(R.id.homeFragmentTv) + navController.setGraph(graph, intent.extras) } val nServers = database.getServersCount() if (nServers < 1) { - graph.setStartDestination(R.id.addServerFragment) + if (!viewModel.startDestinationChanged) { + graph.setStartDestination(R.id.addServerFragment) + navController.setGraph(graph, intent.extras) + viewModel.startDestinationChanged = true + } } - navController.setGraph(graph, intent.extras) if (uiModeManager.currentModeType != Configuration.UI_MODE_TYPE_TELEVISION) { val navView: NavigationBarView = binding.navView as NavigationBarView diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MainViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MainViewModel.kt new file mode 100644 index 00000000..0c4a1477 --- /dev/null +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MainViewModel.kt @@ -0,0 +1,7 @@ +package dev.jdtech.jellyfin.viewmodels + +import androidx.lifecycle.ViewModel + +class MainViewModel : ViewModel() { + var startDestinationChanged = false +} \ No newline at end of file