diff --git a/changelog.d/2530.bugfix b/changelog.d/2530.bugfix new file mode 100644 index 0000000000..612a83dc54 --- /dev/null +++ b/changelog.d/2530.bugfix @@ -0,0 +1 @@ +Fix timeline not showing sender info when room is marked as direct but not a 1:1 room. diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt index b976b14960..a9b4d97452 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt @@ -94,6 +94,7 @@ class TimelinePresenter @AssistedInject constructor( val timelineItems by timelineItemsFactory.collectItemsAsState() val paginationState by timeline.paginationState.collectAsState() val syncUpdateFlow = room.syncUpdateFlow.collectAsState() + val userHasPermissionToSendMessage by room.canSendMessageAsState(type = MessageEventType.ROOM_MESSAGE, updateKey = syncUpdateFlow.value) val userHasPermissionToSendReaction by room.canSendMessageAsState(type = MessageEventType.REACTION, updateKey = syncUpdateFlow.value) @@ -170,7 +171,7 @@ class TimelinePresenter @AssistedInject constructor( val timelineRoomInfo by remember { derivedStateOf { TimelineRoomInfo( - isDirect = room.isDirect, + isDM = room.isDm, userHasPermissionToSendMessage = userHasPermissionToSendMessage, userHasPermissionToSendReaction = userHasPermissionToSendReaction, ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt index a709aa932f..480c2ee582 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt @@ -38,7 +38,7 @@ data class TimelineState( @Immutable data class TimelineRoomInfo( - val isDirect: Boolean, + val isDM: Boolean, val userHasPermissionToSendMessage: Boolean, val userHasPermissionToSendReaction: Boolean, ) 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 002bffc549..13de08b097 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 @@ -235,10 +235,10 @@ internal fun aGroupedEvents( } internal fun aTimelineRoomInfo( - isDirect: Boolean = false, + isDM: Boolean = false, userHasPermissionToSendMessage: Boolean = true, ) = TimelineRoomInfo( - isDirect = isDirect, + isDM = isDM, userHasPermissionToSendMessage = userHasPermissionToSendMessage, userHasPermissionToSendReaction = true, ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt index 6805cd926e..03107739b5 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt @@ -160,7 +160,7 @@ fun TimelineView( } } } - if (state.paginationState.beginningOfRoomReached && !state.timelineRoomInfo.isDirect) { + if (state.paginationState.beginningOfRoomReached && !state.timelineRoomInfo.isDM) { item(contentType = "BeginningOfRoomReached") { TimelineItemRoomBeginningView(roomName = roomName) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessageEventBubble.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessageEventBubble.kt index e7ca8116f1..ef392ad5c6 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessageEventBubble.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessageEventBubble.kt @@ -95,7 +95,7 @@ fun MessageEventBubble( fun Modifier.offsetForItem(): Modifier { return when { state.isMine -> this - state.timelineRoomInfo.isDirect -> this + state.timelineRoomInfo.isDM -> this else -> offset(x = BUBBLE_INCOMING_OFFSET) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt index 75f4a7ce6d..a2da47ffdf 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt @@ -301,7 +301,7 @@ private fun TimelineItemEventRowContent( // Sender val avatarStrokeSize = 3.dp - if (event.showSenderInformation && !timelineRoomInfo.isDirect) { + if (event.showSenderInformation && !timelineRoomInfo.isDM) { MessageSenderInformation( event.safeSenderName, event.senderAvatar, @@ -371,7 +371,7 @@ private fun TimelineItemEventRowContent( // In design we want a offset of 6.dp compare to the bubble, so start is 22.dp (16 + 6) start = when { event.isMine -> 22.dp - timelineRoomInfo.isDirect -> 22.dp + timelineRoomInfo.isDM -> 22.dp else -> 22.dp + BUBBLE_INCOMING_OFFSET }, end = 16.dp diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowForDirectRoomPreview.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowForDirectRoomPreview.kt index 3ac2703ee5..0972458590 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowForDirectRoomPreview.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowForDirectRoomPreview.kt @@ -41,7 +41,7 @@ internal fun TimelineItemEventRowForDirectRoomPreview() = ElementPreview { groupPosition = TimelineItemGroupPosition.First, ), timelineRoomInfo = aTimelineRoomInfo( - isDirect = true, + isDM = true, ), ) ATimelineItemEventRow( @@ -53,7 +53,7 @@ internal fun TimelineItemEventRowForDirectRoomPreview() = ElementPreview { groupPosition = TimelineItemGroupPosition.Last, ), timelineRoomInfo = aTimelineRoomInfo( - isDirect = true, + isDM = true, ), ) }