diff --git a/app/src/main/java/dev/achmad/ledgerr/ui/base/MainActivity.kt b/app/src/main/java/dev/achmad/ledgerr/ui/base/MainActivity.kt index 2cf5050..dd6bc03 100644 --- a/app/src/main/java/dev/achmad/ledgerr/ui/base/MainActivity.kt +++ b/app/src/main/java/dev/achmad/ledgerr/ui/base/MainActivity.kt @@ -8,9 +8,12 @@ import android.view.ViewTreeObserver import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.core.util.Consumer import cafe.adriel.voyager.core.screen.Screen @@ -18,6 +21,9 @@ import cafe.adriel.voyager.core.stack.StackEvent import cafe.adriel.voyager.navigator.Navigator import cafe.adriel.voyager.navigator.NavigatorDisposeBehavior import cafe.adriel.voyager.transitions.ScreenTransition +import dev.achmad.ledgerr.di.util.inject +import dev.achmad.ledgerr.domain.preference.AppPreference +import dev.achmad.ledgerr.domain.preference.AppTheme as AppThemePref import dev.achmad.ledgerr.ui.screens.home.HomeScreen import dev.achmad.ledgerr.ui.theme.AppTheme import kotlinx.coroutines.channels.awaitClose @@ -53,7 +59,17 @@ class MainActivity : ComponentActivity() { enableEdgeToEdge() setContent { - AppTheme { + val systemDark = isSystemInDarkTheme() + val appThemePref by inject() + .appTheme() + .changes() + .collectAsState(initial = AppThemePref.SYSTEM) + val darkTheme = when (appThemePref) { + AppThemePref.LIGHT -> false + AppThemePref.DARK -> true + AppThemePref.SYSTEM -> systemDark + } + AppTheme(darkTheme = darkTheme) { val slideDistance = rememberSlideDistance() Navigator( screen = initialScreen,