diff --git a/features/messages/impl/build.gradle.kts b/features/messages/impl/build.gradle.kts index c1d3067510..7f451a54a5 100644 --- a/features/messages/impl/build.gradle.kts +++ b/features/messages/impl/build.gradle.kts @@ -72,6 +72,7 @@ dependencies { implementation(libs.androidx.constraintlayout.compose) implementation(libs.androidx.media3.exoplayer) implementation(libs.androidx.media3.ui) + implementation(libs.sigpwned.emoji4j) implementation(libs.vanniktech.blurhash) implementation(libs.telephoto.zoomableimage) implementation(libs.matrix.emojibase.bindings) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemTextView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemTextView.kt index e691c1e549..d6d34418bd 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemTextView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemTextView.kt @@ -35,6 +35,7 @@ import io.element.android.features.messages.impl.timeline.components.layout.Cont import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayoutData import io.element.android.features.messages.impl.timeline.model.event.TimelineItemTextBasedContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemTextBasedContentProvider +import io.element.android.features.messages.impl.utils.containsOnlyEmojis import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.matrix.api.core.UserId @@ -54,9 +55,15 @@ fun TimelineItemTextView( modifier: Modifier = Modifier, onContentLayoutChange: (ContentAvoidingLayoutData) -> Unit = {}, ) { + val emojiOnly = (content.formattedBody == null || content.formattedBody.toString() == content.body) && + content.body.replace(" ", "").containsOnlyEmojis() + val textStyle = when { + emojiOnly -> ElementTheme.typography.fontHeadingXlRegular + else -> ElementTheme.typography.fontBodyLgRegular + } CompositionLocalProvider( LocalContentColor provides ElementTheme.colors.textPrimary, - LocalTextStyle provides ElementTheme.typography.fontBodyLgRegular + LocalTextStyle provides textStyle ) { val body = getTextWithResolvedMentions(content) Box(modifier.semantics { contentDescription = content.plainText }) { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionProvider.kt index 087de1753a..35baf24207 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReactionProvider.kt @@ -38,10 +38,10 @@ fun anAggregatedReaction( count: Int = 1, isHighlighted: Boolean = false, ): AggregatedReaction { + val timeFormatter = DateFormat.getTimeInstance(DateFormat.SHORT, java.util.Locale.US) + val date = Date(1_689_061_264L) val senders = buildList { repeat(count) { index -> - val timeFormatter = DateFormat.getTimeInstance(DateFormat.SHORT) - val date = Date(1_689_061_264L) add( AggregatedReactionSender( senderId = if (isHighlighted && index == 0) userId else UserId("@user$index:server.org"), diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContentProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContentProvider.kt index 29fa048e1f..3cdfb73510 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContentProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContentProvider.kt @@ -42,6 +42,7 @@ class TimelineItemEventContentProvider : PreviewParameterProvider