diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/theme/Theme.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/theme/Theme.kt index ca2e4f3a..5a60c8ad 100644 --- a/app/src/main/java/com/infomaniak/swisstransfer/ui/theme/Theme.kt +++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/theme/Theme.kt @@ -23,13 +23,18 @@ import androidx.compose.material3.LocalTextStyle import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.* import androidx.compose.ui.graphics.Color +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.infomaniak.multiplatform_swisstransfer.common.models.Theme +import com.infomaniak.swisstransfer.ui.screen.main.settings.SettingsViewModel val LocalCustomTypography = staticCompositionLocalOf { Typography } val LocalCustomColorScheme: ProvidableCompositionLocal = staticCompositionLocalOf { CustomColorScheme() } @Composable fun SwissTransferTheme( - darkTheme: Boolean = isDarkTheme(), + settingsViewModel: SettingsViewModel = hiltViewModel(), + darkTheme: Boolean = isDarkTheme(settingsViewModel), content: @Composable () -> Unit, ) { val customColors = if (darkTheme) CustomDarkColorScheme else CustomLightColorScheme @@ -47,10 +52,11 @@ fun SwissTransferTheme( } @Composable -fun isDarkTheme(): Boolean { - // rememberMutableStateOf - // TODO check in realm. If system, isSystemDark, otherwise, - return isSystemInDarkTheme() +fun isDarkTheme(settingsViewModel: SettingsViewModel): Boolean { + val appSettings by settingsViewModel.appSettingsFlow.collectAsStateWithLifecycle(null) + return appSettings?.let { + if (it.theme == Theme.SYSTEM) isSystemInDarkTheme() else it.theme == Theme.DARK + } ?: isSystemInDarkTheme() } object SwissTransferTheme {