Fixed generated avatars color when switching between light/dark modes

This commit is contained in:
Sylvain Berfini 2025-10-27 15:17:18 +01:00
parent 7ab7136a5b
commit c6a0f25041
2 changed files with 6 additions and 8 deletions

View file

@ -25,7 +25,6 @@ import android.graphics.Canvas
import android.graphics.Paint import android.graphics.Paint
import android.graphics.Rect import android.graphics.Rect
import android.graphics.RectF import android.graphics.RectF
import android.graphics.drawable.BitmapDrawable
import android.text.TextPaint import android.text.TextPaint
import android.util.TypedValue import android.util.TypedValue
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
@ -34,7 +33,6 @@ import androidx.core.graphics.drawable.IconCompat
import org.linphone.R import org.linphone.R
import org.linphone.utils.AppUtils import org.linphone.utils.AppUtils
import androidx.core.graphics.createBitmap import androidx.core.graphics.createBitmap
import androidx.core.graphics.drawable.toDrawable
class AvatarGenerator(private val context: Context) { class AvatarGenerator(private val context: Context) {
private var textSize: Float = AppUtils.getDimension(R.dimen.avatar_initials_text_size) private var textSize: Float = AppUtils.getDimension(R.dimen.avatar_initials_text_size)
@ -92,10 +90,6 @@ class AvatarGenerator(private val context: Context) {
return bitmap return bitmap
} }
fun buildDrawable(): BitmapDrawable {
return buildBitmap(true).toDrawable(context.resources)
}
fun buildIcon(): IconCompat { fun buildIcon(): IconCompat {
return IconCompat.createWithAdaptiveBitmap(buildBitmap(false)) return IconCompat.createWithAdaptiveBitmap(buildBitmap(false))
} }

View file

@ -20,6 +20,7 @@
package org.linphone.utils package org.linphone.utils
import android.content.Context import android.content.Context
import android.content.res.Configuration
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.Canvas import android.graphics.Canvas
import android.graphics.ImageDecoder import android.graphics.ImageDecoder
@ -41,7 +42,10 @@ class ImageUtils {
@AnyThread @AnyThread
fun generatedAvatarIfNeededAndReturnPath(context: Context, size: Int = 0, textSize: Int = 0, initials: String): String { fun generatedAvatarIfNeededAndReturnPath(context: Context, size: Int = 0, textSize: Int = 0, initials: String): String {
val generatedAvatarPath = FileUtils.getFileStorageCacheDir("$initials.png", overrideExisting = true) val darkMode = context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES
val suffix = if (darkMode) "_dark" else "_light"
val generatedAvatarPath = FileUtils.getFileStorageCacheDir("$initials$suffix.png", overrideExisting = true)
if (generatedAvatarPath.exists()) { if (generatedAvatarPath.exists()) {
val path = generatedAvatarPath.absolutePath val path = generatedAvatarPath.absolutePath
return path return path
@ -57,7 +61,7 @@ class ImageUtils {
if (textSize > 0) { if (textSize > 0) {
builder.setTextSize(AppUtils.getDimension(textSize)) builder.setTextSize(AppUtils.getDimension(textSize))
} }
val bitmap = builder.buildBitmap(true) val bitmap = builder.buildBitmap(false)
val path = FileUtils.storeBitmap(bitmap, generatedAvatarPath) val path = FileUtils.storeBitmap(bitmap, generatedAvatarPath)
return path return path
} }