diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt index d1f96628f3..d807115db6 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt @@ -112,7 +112,7 @@ internal fun aTimelineItemEvent( content = content, reactionsState = TimelineItemReactions( persistentListOf( - AggregatedReaction("👍", "1") + AggregatedReaction("👍", "1", isOnMyMessage = isMine) ) ), sentTime = "12:34", diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt index c0b6f91c9e..7a5e02efe5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt @@ -35,23 +35,29 @@ import io.element.android.features.messages.impl.timeline.model.AggregatedReacti import io.element.android.features.messages.impl.timeline.model.AggregatedReactionProvider import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewLight +import io.element.android.libraries.designsystem.theme.ElementTheme import io.element.android.libraries.designsystem.theme.components.Surface import io.element.android.libraries.designsystem.theme.components.Text @Composable fun MessagesReactionButton(reaction: AggregatedReaction, modifier: Modifier = Modifier) { + val backgroundColor = if (reaction.isOnMyMessage) { + ElementTheme.colors.messageFromMeBackground + } else { + ElementTheme.colors.messageFromOtherBackground + } Surface( modifier = modifier, - color = MaterialTheme.colorScheme.surfaceVariant, + color = backgroundColor, border = BorderStroke(2.dp, MaterialTheme.colorScheme.background), - shape = RoundedCornerShape(corner = CornerSize(12.dp)), + shape = RoundedCornerShape(corner = CornerSize(14.dp)), ) { Row( - modifier = Modifier.padding(vertical = 5.dp, horizontal = 8.dp), + modifier = Modifier.padding(vertical = 6.dp, horizontal = 12.dp), verticalAlignment = Alignment.CenterVertically ) { // TODO `reaction.isHighlighted` is not used. - Text(text = reaction.key, fontSize = 12.sp) + Text(text = reaction.key, fontSize = 14.sp) Spacer(modifier = Modifier.width(4.dp)) Text(text = reaction.count, color = MaterialTheme.colorScheme.secondary, fontSize = 12.sp) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt index 0aae6ea753..5a46b22855 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemEventFactory.kt @@ -89,7 +89,12 @@ class TimelineItemEventFactory @Inject constructor( private fun MatrixTimelineItem.Event.computeReactionsState(): TimelineItemReactions { val aggregatedReactions = event.reactions.map { - AggregatedReaction(key = it.key, count = it.count.toString(), isHighlighted = false) + AggregatedReaction( + key = it.key, + count = it.count.toString(), + isHighlighted = false, + isOnMyMessage = event.isOwn, + ) } return TimelineItemReactions(aggregatedReactions.toImmutableList()) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReaction.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReaction.kt index d7fde40968..78b7e48a0a 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReaction.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/AggregatedReaction.kt @@ -16,8 +16,9 @@ package io.element.android.features.messages.impl.timeline.model -data class AggregatedReaction( +data class AggregatedReaction constructor( val key: String, val count: String, + val isOnMyMessage: Boolean, val isHighlighted: Boolean = false ) 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 301a9db36c..501bfc8c6b 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 @@ -20,16 +20,24 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider open class AggregatedReactionProvider : PreviewParameterProvider { override val values: Sequence - get() = sequenceOf( - anAggregatedReaction(), - anAggregatedReaction().copy(count = "88"), - anAggregatedReaction().copy(isHighlighted = true), - anAggregatedReaction().copy(count = "88", isHighlighted = true), - ) + get() = sequenceOf(false, true).flatMap { + sequenceOf( + anAggregatedReaction(isOnMyMessage = it), + anAggregatedReaction(isOnMyMessage = it, count = "88"), + anAggregatedReaction(isOnMyMessage = it, isHighlighted = true), + anAggregatedReaction(isOnMyMessage = it, count = "88", isHighlighted = true), + ) + } } -fun anAggregatedReaction() = AggregatedReaction( - key = "👍", - count = "1", // TODO Why is it a String? - isHighlighted = false, +fun anAggregatedReaction( + key: String = "👍", + count: String = "1", // TODO Why is it a String? + isOnMyMessage: Boolean = false, + isHighlighted: Boolean = false, +) = AggregatedReaction( + key = key, + count = count, + isOnMyMessage = isOnMyMessage, + isHighlighted = isHighlighted, )