Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -75,25 +75,40 @@ abstract class BaseTranslator(
// A. Specific Color Override
val overrideColor = override?.highlightColor
if (!overrideColor.isNullOrEmpty()) {
return overrideColor
return overrideColor.toSafeColorHex(defaultHex)
}

// B. App-Specific "Use App Colors"
// If explicit true -> extract. If explicit false -> skip extraction (fall to global).
if (override?.useAppColors == true) {
return getAppBrandColor(pkg) ?: theme.global.highlightColor ?: defaultHex
return (getAppBrandColor(pkg) ?: theme.global.highlightColor ?: defaultHex).toSafeColorHex(defaultHex)
}
}

// 2. Global "Use App Colors" -> Extract from Icon
// Only run if app override didn't explicitly disable it (useAppColors != false)
val appOverrideDisabled = theme.apps[pkg]?.useAppColors == false
if (theme.global.useAppColors && !appOverrideDisabled && pkg != null) {
return getAppBrandColor(pkg) ?: theme.global.highlightColor ?: defaultHex
return (getAppBrandColor(pkg) ?: theme.global.highlightColor ?: defaultHex).toSafeColorHex(defaultHex)
}

// 3. Global Theme Highlight -> Default Fallback
return theme.global.highlightColor ?: defaultHex
return (theme.global.highlightColor ?: defaultHex).toSafeColorHex(defaultHex)
}

/**
* Validates that a color string can be parsed by [android.graphics.Color.parseColor].
* Returns the original string if valid, or [fallback] if parsing fails.
* This prevents SystemUI crashes caused by invalid color values in theme configs.
*/
private fun String.toSafeColorHex(fallback: String): String {
return try {
Color.parseColor(this)
this
} catch (_: IllegalArgumentException) {
Log.w("BaseTranslator", "Invalid highlight color \"$this\", falling back to \"$fallback\"")
fallback
}
}

private fun getAppBrandColor(pkg: String): String? {
Expand Down