From 86f530e5d0a9d966100ae193f3d4fb6f5188810b Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 12 Mar 2024 17:35:54 +0100 Subject: [PATCH 1/2] Bugfix : fix timeline not showing sender info when room is marked as direct but not a 1:1 room #2530 --- changelog.d/2530.bugfix | 1 + .../features/messages/impl/timeline/TimelinePresenter.kt | 3 ++- .../android/features/messages/impl/timeline/TimelineState.kt | 2 +- .../features/messages/impl/timeline/TimelineStateProvider.kt | 4 ++-- .../android/features/messages/impl/timeline/TimelineView.kt | 2 +- .../messages/impl/timeline/components/MessageEventBubble.kt | 2 +- .../messages/impl/timeline/components/TimelineItemEventRow.kt | 4 ++-- .../components/TimelineItemEventRowForDirectRoomPreview.kt | 4 ++-- 8 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 changelog.d/2530.bugfix 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, ), ) } From 90cd0dc44e714566e9734022516ef086151ab430 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 13 Mar 2024 10:13:10 +0100 Subject: [PATCH 2/2] Acronyms in camel case should have only the first letter capitalized. --- .../features/messages/impl/timeline/TimelinePresenter.kt | 2 +- .../android/features/messages/impl/timeline/TimelineState.kt | 2 +- .../features/messages/impl/timeline/TimelineStateProvider.kt | 4 ++-- .../android/features/messages/impl/timeline/TimelineView.kt | 2 +- .../messages/impl/timeline/components/MessageEventBubble.kt | 2 +- .../messages/impl/timeline/components/TimelineItemEventRow.kt | 4 ++-- .../components/TimelineItemEventRowForDirectRoomPreview.kt | 4 ++-- 7 files changed, 10 insertions(+), 10 deletions(-) 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 a9b4d97452..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 @@ -171,7 +171,7 @@ class TimelinePresenter @AssistedInject constructor( val timelineRoomInfo by remember { derivedStateOf { TimelineRoomInfo( - isDM = room.isDm, + 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 480c2ee582..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 isDM: 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 13de08b097..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( - isDM: Boolean = false, + isDm: Boolean = false, userHasPermissionToSendMessage: Boolean = true, ) = TimelineRoomInfo( - isDM = isDM, + 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 03107739b5..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.isDM) { + 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 ef392ad5c6..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.isDM -> 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 a2da47ffdf..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.isDM) { + 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.isDM -> 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 0972458590..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( - isDM = true, + isDm = true, ), ) ATimelineItemEventRow( @@ -53,7 +53,7 @@ internal fun TimelineItemEventRowForDirectRoomPreview() = ElementPreview { groupPosition = TimelineItemGroupPosition.Last, ), timelineRoomInfo = aTimelineRoomInfo( - isDM = true, + isDm = true, ), ) }