Make caching of mxid-based colors theme-friendly

Change-Id: I09b811c2cf1131914ab025c4a4fb5d4da74e3d88
This commit is contained in:
SpiritCroc 2021-09-16 17:12:23 +02:00
parent 8005f44768
commit d4a3e3828c

View file

@ -33,6 +33,7 @@ class MatrixItemColorProvider @Inject constructor(
private val vectorPreferences: VectorPreferences,
private val colorProvider: ColorProvider
) {
// Note: compared to Element, we do not cache the actual color, but the color-attr, to remain theme-safe
private val cache = mutableMapOf<String, Int>()
@ColorInt
@ -54,14 +55,14 @@ class MatrixItemColorProvider @Inject constructor(
)
}
USER_COLORING_FROM_ID -> {
return cache.getOrPut(matrixItem.id) {
colorProvider.getColorFromAttribute(
return colorProvider.getColorFromAttribute(
cache.getOrPut(matrixItem.id) {
when (matrixItem) {
is MatrixItem.UserItem -> getColorAttrFromUserId(matrixItem.id)
else -> getColorAttrFromRoomId(matrixItem.id)
}
)
}
}
)
}
else -> {
colorProvider.getColorFromAttribute(android.R.attr.colorAccent)