From c6a0f25041c0086a5758fbdaee3fa861b59662ea Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 27 Oct 2025 15:17:18 +0100 Subject: [PATCH] Fixed generated avatars color when switching between light/dark modes --- .../main/java/org/linphone/contacts/AvatarGenerator.kt | 6 ------ app/src/main/java/org/linphone/utils/ImageUtils.kt | 8 ++++++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/linphone/contacts/AvatarGenerator.kt b/app/src/main/java/org/linphone/contacts/AvatarGenerator.kt index 704e5543d..a66cda512 100644 --- a/app/src/main/java/org/linphone/contacts/AvatarGenerator.kt +++ b/app/src/main/java/org/linphone/contacts/AvatarGenerator.kt @@ -25,7 +25,6 @@ import android.graphics.Canvas import android.graphics.Paint import android.graphics.Rect import android.graphics.RectF -import android.graphics.drawable.BitmapDrawable import android.text.TextPaint import android.util.TypedValue import androidx.core.content.ContextCompat @@ -34,7 +33,6 @@ import androidx.core.graphics.drawable.IconCompat import org.linphone.R import org.linphone.utils.AppUtils import androidx.core.graphics.createBitmap -import androidx.core.graphics.drawable.toDrawable class AvatarGenerator(private val context: Context) { private var textSize: Float = AppUtils.getDimension(R.dimen.avatar_initials_text_size) @@ -92,10 +90,6 @@ class AvatarGenerator(private val context: Context) { return bitmap } - fun buildDrawable(): BitmapDrawable { - return buildBitmap(true).toDrawable(context.resources) - } - fun buildIcon(): IconCompat { return IconCompat.createWithAdaptiveBitmap(buildBitmap(false)) } diff --git a/app/src/main/java/org/linphone/utils/ImageUtils.kt b/app/src/main/java/org/linphone/utils/ImageUtils.kt index 7016f1943..1367b8cd0 100644 --- a/app/src/main/java/org/linphone/utils/ImageUtils.kt +++ b/app/src/main/java/org/linphone/utils/ImageUtils.kt @@ -20,6 +20,7 @@ package org.linphone.utils import android.content.Context +import android.content.res.Configuration import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.ImageDecoder @@ -41,7 +42,10 @@ class ImageUtils { @AnyThread 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()) { val path = generatedAvatarPath.absolutePath return path @@ -57,7 +61,7 @@ class ImageUtils { if (textSize > 0) { builder.setTextSize(AppUtils.getDimension(textSize)) } - val bitmap = builder.buildBitmap(true) + val bitmap = builder.buildBitmap(false) val path = FileUtils.storeBitmap(bitmap, generatedAvatarPath) return path }