From ef367e1d89deed5f5a706a21e23717443396250b Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Thu, 12 Sep 2024 10:02:59 +0200 Subject: [PATCH] Fixed theme not being changed properly until recomposition + reduced themes saturation --- .../com/jetpackduba/gitnuro/theme/Color.kt | 16 ++--- .../com/jetpackduba/gitnuro/theme/Theme.kt | 62 +++++++++++++------ 2 files changed, 50 insertions(+), 28 deletions(-) diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/theme/Color.kt b/src/main/kotlin/com/jetpackduba/gitnuro/theme/Color.kt index 5041d4a..d09f2ce 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/theme/Color.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/theme/Color.kt @@ -43,10 +43,10 @@ val darkBlueTheme = ColorsScheme( onBackgroundSecondary = Color(0xFFCCCBCB), error = Color(0xFFc93838), onError = Color(0xFFFFFFFF), - background = Color(0xFF0E1621), + background = Color(0xFF10161e), backgroundSelected = Color(0xFF2f3640), - surface = Color(0xFF182533), - secondarySurface = Color(0xFF122C46), + surface = Color(0xff1d2630), + secondarySurface = Color(0xFF1a2b3d), tertiarySurface = Color(0xFF0a335c), addFile = Color(0xFF32A852), deletedFile = Color(0xFFc93838), @@ -64,7 +64,7 @@ val darkBlueTheme = ColorsScheme( ) val darkGrayTheme = ColorsScheme( - primary = Color(0xFF014F97), + primary = Color(0xFF264e73), primaryVariant = Color(0xFFCDEAFF), onPrimary = Color(0xFFFFFFFFF), secondary = Color(0xFFe9c754), @@ -73,11 +73,11 @@ val darkGrayTheme = ColorsScheme( onBackgroundSecondary = Color(0xFFCCCBCB), error = Color(0xFFc93838), onError = Color(0xFFFFFFFF), - background = Color(0xFF16181F), + background = Color(0xFF17181c), backgroundSelected = Color(0xFF32373e), - surface = Color(0xFF212731), - secondarySurface = Color(0xFF282d36), - tertiarySurface = Color(0xFF21303d), + surface = Color(0xFF25282d), + secondarySurface = Color(0xFF292d32), + tertiarySurface = Color(0xFF252f37), addFile = Color(0xFF32A852), deletedFile = Color(0xFFc93838), modifiedFile = Color(0xFF0070D8), diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/theme/Theme.kt b/src/main/kotlin/com/jetpackduba/gitnuro/theme/Theme.kt index ada9e72..317f59c 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/theme/Theme.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/theme/Theme.kt @@ -9,9 +9,10 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.jetpackduba.gitnuro.ui.dropdowns.DropDownOption +import kotlinx.coroutines.flow.MutableStateFlow private val defaultAppTheme: ColorsScheme = darkBlueTheme -private var appTheme: ColorsScheme = defaultAppTheme +private var appTheme: MutableStateFlow = MutableStateFlow(defaultAppTheme) internal val LocalLinesHeight = compositionLocalOf { spacedLineHeight } class LinesHeight internal constructor( @@ -60,7 +61,7 @@ fun AppTheme( LinesHeightType.COMPACT -> compactLineHeight } - appTheme = theme + appTheme.value = theme val composeColors = theme.toComposeColors() val compositionValues = arrayOf(LocalLinesHeight provides lineHeight) @@ -80,57 +81,78 @@ val MaterialTheme.linesHeight: LinesHeight @ReadOnlyComposable get() = LocalLinesHeight.current + +private val theme: ColorsScheme + @Composable + get() = appTheme.collectAsState().value + val Colors.backgroundSelected: Color - get() = appTheme.backgroundSelected + @Composable + get() = theme.backgroundSelected val Colors.onBackgroundSecondary: Color - get() = appTheme.onBackgroundSecondary + @Composable + get() = theme.onBackgroundSecondary val Colors.secondarySurface: Color - get() = appTheme.secondarySurface + @Composable + get() = theme.secondarySurface val Colors.tertiarySurface: Color - get() = appTheme.tertiarySurface - + @Composable + get() = theme.tertiarySurface val Colors.addFile: Color - get() = appTheme.addFile + @Composable + get() = theme.addFile val Colors.deleteFile: Color - get() = appTheme.deletedFile + @Composable + get() = theme.deletedFile val Colors.modifyFile: Color - get() = appTheme.modifiedFile + @Composable + get() = theme.modifiedFile val Colors.conflictFile: Color - get() = appTheme.conflictingFile + @Composable + get() = theme.conflictingFile val Colors.abortButton: Color - get() = appTheme.error + @Composable + get() = theme.error val Colors.scrollbarNormal: Color - get() = appTheme.normalScrollbar + @Composable + get() = theme.normalScrollbar val Colors.scrollbarHover: Color - get() = appTheme.hoverScrollbar + @Composable + get() = theme.hoverScrollbar val Colors.dialogOverlay: Color - get() = appTheme.dialogOverlay + @Composable + get() = theme.dialogOverlay val Colors.diffLineAdded: Color - get() = appTheme.diffLineAdded + @Composable + get() = theme.diffLineAdded val Colors.diffLineRemoved: Color - get() = appTheme.diffLineRemoved + @Composable + get() = theme.diffLineRemoved val Colors.diffKeyword: Color - get() = appTheme.diffKeyword + @Composable + get() = theme.diffKeyword val Colors.diffAnnotation: Color - get() = appTheme.diffAnnotation + @Composable + get() = theme.diffAnnotation val Colors.diffComment: Color - get() = appTheme.diffComment + @Composable + get() = theme.diffComment val Colors.isDark: Boolean get() = !this.isLight