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..67915bf9d4 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..ab9d93d678 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..aa35b620b9 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..094ecb6c3b 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..9e1095e02a 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..ffd2925c14 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..1981bc2c39 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, ), ) }