Fixed theme not being changed properly until recomposition + reduced themes saturation

This commit is contained in:
Abdelilah El Aissaoui 2024-09-12 10:02:59 +02:00
parent 0f5e4248b9
commit ef367e1d89
No known key found for this signature in database
GPG Key ID: 7587FC860F594869
2 changed files with 50 additions and 28 deletions

View File

@ -43,10 +43,10 @@ val darkBlueTheme = ColorsScheme(
onBackgroundSecondary = Color(0xFFCCCBCB), onBackgroundSecondary = Color(0xFFCCCBCB),
error = Color(0xFFc93838), error = Color(0xFFc93838),
onError = Color(0xFFFFFFFF), onError = Color(0xFFFFFFFF),
background = Color(0xFF0E1621), background = Color(0xFF10161e),
backgroundSelected = Color(0xFF2f3640), backgroundSelected = Color(0xFF2f3640),
surface = Color(0xFF182533), surface = Color(0xff1d2630),
secondarySurface = Color(0xFF122C46), secondarySurface = Color(0xFF1a2b3d),
tertiarySurface = Color(0xFF0a335c), tertiarySurface = Color(0xFF0a335c),
addFile = Color(0xFF32A852), addFile = Color(0xFF32A852),
deletedFile = Color(0xFFc93838), deletedFile = Color(0xFFc93838),
@ -64,7 +64,7 @@ val darkBlueTheme = ColorsScheme(
) )
val darkGrayTheme = ColorsScheme( val darkGrayTheme = ColorsScheme(
primary = Color(0xFF014F97), primary = Color(0xFF264e73),
primaryVariant = Color(0xFFCDEAFF), primaryVariant = Color(0xFFCDEAFF),
onPrimary = Color(0xFFFFFFFFF), onPrimary = Color(0xFFFFFFFFF),
secondary = Color(0xFFe9c754), secondary = Color(0xFFe9c754),
@ -73,11 +73,11 @@ val darkGrayTheme = ColorsScheme(
onBackgroundSecondary = Color(0xFFCCCBCB), onBackgroundSecondary = Color(0xFFCCCBCB),
error = Color(0xFFc93838), error = Color(0xFFc93838),
onError = Color(0xFFFFFFFF), onError = Color(0xFFFFFFFF),
background = Color(0xFF16181F), background = Color(0xFF17181c),
backgroundSelected = Color(0xFF32373e), backgroundSelected = Color(0xFF32373e),
surface = Color(0xFF212731), surface = Color(0xFF25282d),
secondarySurface = Color(0xFF282d36), secondarySurface = Color(0xFF292d32),
tertiarySurface = Color(0xFF21303d), tertiarySurface = Color(0xFF252f37),
addFile = Color(0xFF32A852), addFile = Color(0xFF32A852),
deletedFile = Color(0xFFc93838), deletedFile = Color(0xFFc93838),
modifiedFile = Color(0xFF0070D8), modifiedFile = Color(0xFF0070D8),

View File

@ -9,9 +9,10 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.jetpackduba.gitnuro.ui.dropdowns.DropDownOption import com.jetpackduba.gitnuro.ui.dropdowns.DropDownOption
import kotlinx.coroutines.flow.MutableStateFlow
private val defaultAppTheme: ColorsScheme = darkBlueTheme private val defaultAppTheme: ColorsScheme = darkBlueTheme
private var appTheme: ColorsScheme = defaultAppTheme private var appTheme: MutableStateFlow<ColorsScheme> = MutableStateFlow(defaultAppTheme)
internal val LocalLinesHeight = compositionLocalOf { spacedLineHeight } internal val LocalLinesHeight = compositionLocalOf { spacedLineHeight }
class LinesHeight internal constructor( class LinesHeight internal constructor(
@ -60,7 +61,7 @@ fun AppTheme(
LinesHeightType.COMPACT -> compactLineHeight LinesHeightType.COMPACT -> compactLineHeight
} }
appTheme = theme appTheme.value = theme
val composeColors = theme.toComposeColors() val composeColors = theme.toComposeColors()
val compositionValues = arrayOf(LocalLinesHeight provides lineHeight) val compositionValues = arrayOf(LocalLinesHeight provides lineHeight)
@ -80,57 +81,78 @@ val MaterialTheme.linesHeight: LinesHeight
@ReadOnlyComposable @ReadOnlyComposable
get() = LocalLinesHeight.current get() = LocalLinesHeight.current
private val theme: ColorsScheme
@Composable
get() = appTheme.collectAsState().value
val Colors.backgroundSelected: Color val Colors.backgroundSelected: Color
get() = appTheme.backgroundSelected @Composable
get() = theme.backgroundSelected
val Colors.onBackgroundSecondary: Color val Colors.onBackgroundSecondary: Color
get() = appTheme.onBackgroundSecondary @Composable
get() = theme.onBackgroundSecondary
val Colors.secondarySurface: Color val Colors.secondarySurface: Color
get() = appTheme.secondarySurface @Composable
get() = theme.secondarySurface
val Colors.tertiarySurface: Color val Colors.tertiarySurface: Color
get() = appTheme.tertiarySurface @Composable
get() = theme.tertiarySurface
val Colors.addFile: Color val Colors.addFile: Color
get() = appTheme.addFile @Composable
get() = theme.addFile
val Colors.deleteFile: Color val Colors.deleteFile: Color
get() = appTheme.deletedFile @Composable
get() = theme.deletedFile
val Colors.modifyFile: Color val Colors.modifyFile: Color
get() = appTheme.modifiedFile @Composable
get() = theme.modifiedFile
val Colors.conflictFile: Color val Colors.conflictFile: Color
get() = appTheme.conflictingFile @Composable
get() = theme.conflictingFile
val Colors.abortButton: Color val Colors.abortButton: Color
get() = appTheme.error @Composable
get() = theme.error
val Colors.scrollbarNormal: Color val Colors.scrollbarNormal: Color
get() = appTheme.normalScrollbar @Composable
get() = theme.normalScrollbar
val Colors.scrollbarHover: Color val Colors.scrollbarHover: Color
get() = appTheme.hoverScrollbar @Composable
get() = theme.hoverScrollbar
val Colors.dialogOverlay: Color val Colors.dialogOverlay: Color
get() = appTheme.dialogOverlay @Composable
get() = theme.dialogOverlay
val Colors.diffLineAdded: Color val Colors.diffLineAdded: Color
get() = appTheme.diffLineAdded @Composable
get() = theme.diffLineAdded
val Colors.diffLineRemoved: Color val Colors.diffLineRemoved: Color
get() = appTheme.diffLineRemoved @Composable
get() = theme.diffLineRemoved
val Colors.diffKeyword: Color val Colors.diffKeyword: Color
get() = appTheme.diffKeyword @Composable
get() = theme.diffKeyword
val Colors.diffAnnotation: Color val Colors.diffAnnotation: Color
get() = appTheme.diffAnnotation @Composable
get() = theme.diffAnnotation
val Colors.diffComment: Color val Colors.diffComment: Color
get() = appTheme.diffComment @Composable
get() = theme.diffComment
val Colors.isDark: Boolean val Colors.isDark: Boolean
get() = !this.isLight get() = !this.isLight