Rework the data update throughout the app.

This commit is contained in:
Thomas Andres Gomez 2023-09-26 11:50:44 +02:00
parent cbe945d7f5
commit b36cb9b601
19 changed files with 323 additions and 121 deletions

View file

@ -5,6 +5,7 @@ import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.BackHandler
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.navigationBarsPadding
@ -15,6 +16,7 @@ import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Surface
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.compositionLocalOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.staticCompositionLocalOf
@ -22,6 +24,7 @@ import androidx.compose.ui.Modifier
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.core.view.WindowCompat
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewmodel.compose.viewModel
import com.pixelized.rplexicon.ui.composable.BlurredOverlayHost
import com.pixelized.rplexicon.ui.navigation.ScreenNavHost
import com.pixelized.rplexicon.ui.screens.rolls.BlurredRollOverlayHostState
@ -45,6 +48,9 @@ val NO_WINDOW_INSETS = WindowInsets(0, 0, 0, 0)
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
private val launcherViewModel: LauncherViewModel by viewModels()
private val rollViewModel: RollOverlayViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -53,19 +59,19 @@ class MainActivity : ComponentActivity() {
// splashscreen management
installSplashScreen().apply {
setKeepOnScreenCondition { false }
setKeepOnScreenCondition { launcherViewModel.isLoading }
}
setContent {
LexiconTheme {
val rollViewModel = hiltViewModel<RollOverlayViewModel>()
val snack = remember { SnackbarHostState() }
val overlay = rememberBlurredRollOverlayHostState(
viewModel = rollViewModel,
)
CompositionLocalProvider(
LocalActivity provides this,
LocalSnack provides remember { SnackbarHostState() },
LocalSnack provides snack,
LocalRollOverlay provides overlay,
) {
Scaffold(
@ -101,6 +107,12 @@ class MainActivity : ComponentActivity() {
overlay.hideOverlay()
}
}
LaunchedEffect(key1 = "LauncherError") {
launcherViewModel.error.collect {
snack.showSnackbar(message = it)
}
}
}
}
}