Increase text size when chat bubble only contains emoji character(s)

This commit is contained in:
Sylvain Berfini 2025-06-13 16:22:44 +02:00
parent 4ef9a2bdf3
commit 19df3b07dc
5 changed files with 28 additions and 2 deletions

View file

@ -135,6 +135,8 @@ class MessageModel
val text = MutableLiveData<Spannable>()
val isTextEmoji = MutableLiveData<Boolean>()
val reactions = MutableLiveData<String>()
val ourReactionIndex = MutableLiveData<Int>()
@ -655,6 +657,13 @@ class MessageModel
val textContent = content.utf8Text.orEmpty().trim()
val spannableBuilder = SpannableStringBuilder(textContent)
val emojiOnly = AppUtils.isTextOnlyContainsEmoji(textContent)
isTextEmoji.postValue(emojiOnly)
if (emojiOnly) {
text.postValue(spannableBuilder)
return
}
// Check for search
if (highlight.isNotEmpty()) {
val indexStart = textContent.indexOf(highlight, 0, ignoreCase = true)

View file

@ -154,6 +154,21 @@ class AppUtils {
return initials
}
@AnyThread
fun isTextOnlyContainsEmoji(text: String): Boolean {
if (text.isEmpty()) return false
var textToCheck = text
do {
var firstSymbol = extractFirstSymbol(textToCheck)
var symbolLength = firstSymbol.length
if (symbolLength <= 1) return false
textToCheck = textToCheck.substring(symbolLength)
} while (textToCheck.isNotEmpty())
return true
}
@AnyThread
fun getDeviceName(context: Context): String {
var name = Settings.Global.getString(

View file

@ -230,7 +230,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{model.text, default=`Lorem ipsum dolor sit amet`}"
android:textSize="14sp"
android:textSize="@{model.isTextEmoji ? @dimen/chat_bubble_emoji_only_text_size : @dimen/chat_bubble_text_size, default=@dimen/chat_bubble_text_size}"
android:textColor="?attr/color_main2_800"
android:gravity="center_vertical|start"
android:visibility="@{model.text.length() > 0 ? View.VISIBLE : View.GONE}"/>

View file

@ -202,7 +202,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{model.text, default=`Lorem ipsum dolor sit amet`}"
android:textSize="14sp"
android:textSize="@{model.isTextEmoji ? @dimen/chat_bubble_emoji_only_text_size : @dimen/chat_bubble_text_size, default=@dimen/chat_bubble_text_size}"
android:textColor="?attr/color_main2_800"
android:gravity="center_vertical|start"
android:visibility="@{model.text.length() > 0 ? View.VISIBLE : View.GONE}"/>

View file

@ -84,6 +84,8 @@
<dimen name="chat_bubble_top_margin">8dp</dimen>
<dimen name="chat_bubble_grouped_bottom_margin">2dp</dimen>
<dimen name="chat_bubble_bottom_margin">8dp</dimen>
<dimen name="chat_bubble_text_size">14sp</dimen>
<dimen name="chat_bubble_emoji_only_text_size">45sp</dimen>
<dimen name="chat_bubble_long_press_emoji_reaction_size">25dp</dimen>
<dimen name="chat_bubble_big_image_max_size">175dp</dimen>
<dimen name="chat_bubble_grid_file_size">87dp</dimen>