diff --git a/app/src/main/java/org/unifiedpush/distributor/sunup/activities/ui/AppUi.kt b/app/src/main/java/org/unifiedpush/distributor/sunup/activities/ui/AppUi.kt index 75056af..f938a03 100644 --- a/app/src/main/java/org/unifiedpush/distributor/sunup/activities/ui/AppUi.kt +++ b/app/src/main/java/org/unifiedpush/distributor/sunup/activities/ui/AppUi.kt @@ -12,11 +12,9 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview -import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavHostController @@ -24,13 +22,14 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController +import org.unifiedpush.android.distributor.ui.R as LibR import org.unifiedpush.android.distributor.ui.compose.AppBar import org.unifiedpush.distributor.sunup.R import org.unifiedpush.distributor.sunup.activities.DistribMigrationViewModel import org.unifiedpush.distributor.sunup.activities.MainViewModel import org.unifiedpush.distributor.sunup.activities.PreviewFactory import org.unifiedpush.distributor.sunup.activities.SettingsViewModel -import org.unifiedpush.android.distributor.ui.R as LibR +import org.unifiedpush.distributor.sunup.activities.ThemeViewModel enum class AppScreen(@StringRes val title: Int) { Main(R.string.app_name), @@ -51,23 +50,6 @@ private fun DefaultTopBar( modifier ) -@Composable -inline fun sharedViewModel( - navController: NavHostController, - screen: AppScreen, - factory: ViewModelProvider.Factory -): VM? { - val currentBackStackEntry by navController.currentBackStackEntryAsState() - return if (currentBackStackEntry?.destination?.route == screen.name) { - val parentEntry = remember(currentBackStackEntry) { - navController.getBackStackEntry(screen.name) - } - viewModel(parentEntry, factory = factory) - } else { - null - } -} - @Composable fun App( factory: ViewModelProvider.Factory, @@ -80,20 +62,18 @@ fun App( ) // shared with all views, no need to scope it val migrationViewModel = viewModel(factory = factory) + val mainViewModel = viewModel(factory = factory) Scaffold( topBar = { when (currentScreen) { AppScreen.Main -> { - sharedViewModel( - navController, - currentScreen, - factory - )?.let { - MainAppBarOrSelection(it, onGoToSettings = { + MainAppBarOrSelection( + mainViewModel, + onGoToSettings = { navController.navigate(AppScreen.Settings.name) - }) - } + } + ) } else -> null } ?: DefaultTopBar( @@ -113,14 +93,14 @@ fun App( .padding(innerPadding) ) { composable(route = AppScreen.Main.name) { - sharedViewModel(navController, currentScreen, factory)?.let { - MainScreen(it, migrationViewModel) - } + MainScreen( + mainViewModel, + migrationViewModel + ) } composable(route = AppScreen.Settings.name) { - sharedViewModel(navController, currentScreen, factory)?.let { - SettingsScreen(it, themeViewModel, migrationViewModel) - } + val vm = viewModel(factory = factory) + SettingsScreen(vm, themeViewModel, migrationViewModel) } } } diff --git a/app/src/main/java/org/unifiedpush/distributor/sunup/activities/ui/ThemeViewModel.kt b/app/src/main/java/org/unifiedpush/distributor/sunup/activities/ui/ThemeViewModel.kt deleted file mode 100644 index 7d3e520..0000000 --- a/app/src/main/java/org/unifiedpush/distributor/sunup/activities/ui/ThemeViewModel.kt +++ /dev/null @@ -1,25 +0,0 @@ -package org.unifiedpush.distributor.sunup.activities.ui - -import android.app.Application -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.setValue -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope -import kotlinx.coroutines.launch -import org.unifiedpush.distributor.sunup.AppStore - -class ThemeViewModel(val application: Application? = null): ViewModel() { - var dynamicColors by mutableStateOf( - application?.let {AppStore(it).dynamicColors} ?: false - ) - - fun toggleDynamicColors() { - viewModelScope.launch { - dynamicColors = !dynamicColors - application?.run { - AppStore(this).dynamicColors = dynamicColors - } - } - } -} \ No newline at end of file