Browse Source

Bugfix : fix timeline not showing sender info when room is marked as direct but not a 1:1 room #2530

pull/2537/head
ganfra 6 months ago
parent
commit
40287e1991
  1. 1
      changelog.d/2530.bugfix
  2. 3
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt
  3. 2
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt
  4. 4
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt
  5. 2
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt
  6. 2
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessageEventBubble.kt
  7. 4
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt
  8. 4
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowForDirectRoomPreview.kt

1
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.

3
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 timelineItems by timelineItemsFactory.collectItemsAsState()
val paginationState by timeline.paginationState.collectAsState() val paginationState by timeline.paginationState.collectAsState()
val syncUpdateFlow = room.syncUpdateFlow.collectAsState() val syncUpdateFlow = room.syncUpdateFlow.collectAsState()
val userHasPermissionToSendMessage by room.canSendMessageAsState(type = MessageEventType.ROOM_MESSAGE, updateKey = syncUpdateFlow.value) val userHasPermissionToSendMessage by room.canSendMessageAsState(type = MessageEventType.ROOM_MESSAGE, updateKey = syncUpdateFlow.value)
val userHasPermissionToSendReaction by room.canSendMessageAsState(type = MessageEventType.REACTION, 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 { val timelineRoomInfo by remember {
derivedStateOf { derivedStateOf {
TimelineRoomInfo( TimelineRoomInfo(
isDirect = room.isDirect, isDM = room.isDm,
userHasPermissionToSendMessage = userHasPermissionToSendMessage, userHasPermissionToSendMessage = userHasPermissionToSendMessage,
userHasPermissionToSendReaction = userHasPermissionToSendReaction, userHasPermissionToSendReaction = userHasPermissionToSendReaction,
) )

2
features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt

@ -38,7 +38,7 @@ data class TimelineState(
@Immutable @Immutable
data class TimelineRoomInfo( data class TimelineRoomInfo(
val isDirect: Boolean, val isDM: Boolean,
val userHasPermissionToSendMessage: Boolean, val userHasPermissionToSendMessage: Boolean,
val userHasPermissionToSendReaction: Boolean, val userHasPermissionToSendReaction: Boolean,
) )

4
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( internal fun aTimelineRoomInfo(
isDirect: Boolean = false, isDM: Boolean = false,
userHasPermissionToSendMessage: Boolean = true, userHasPermissionToSendMessage: Boolean = true,
) = TimelineRoomInfo( ) = TimelineRoomInfo(
isDirect = isDirect, isDM = isDM,
userHasPermissionToSendMessage = userHasPermissionToSendMessage, userHasPermissionToSendMessage = userHasPermissionToSendMessage,
userHasPermissionToSendReaction = true, userHasPermissionToSendReaction = true,
) )

2
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") { item(contentType = "BeginningOfRoomReached") {
TimelineItemRoomBeginningView(roomName = roomName) TimelineItemRoomBeginningView(roomName = roomName)
} }

2
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 { fun Modifier.offsetForItem(): Modifier {
return when { return when {
state.isMine -> this state.isMine -> this
state.timelineRoomInfo.isDirect -> this state.timelineRoomInfo.isDM -> this
else -> offset(x = BUBBLE_INCOMING_OFFSET) else -> offset(x = BUBBLE_INCOMING_OFFSET)
} }
} }

4
features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt

@ -301,7 +301,7 @@ private fun TimelineItemEventRowContent(
// Sender // Sender
val avatarStrokeSize = 3.dp val avatarStrokeSize = 3.dp
if (event.showSenderInformation && !timelineRoomInfo.isDirect) { if (event.showSenderInformation && !timelineRoomInfo.isDM) {
MessageSenderInformation( MessageSenderInformation(
event.safeSenderName, event.safeSenderName,
event.senderAvatar, 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) // In design we want a offset of 6.dp compare to the bubble, so start is 22.dp (16 + 6)
start = when { start = when {
event.isMine -> 22.dp event.isMine -> 22.dp
timelineRoomInfo.isDirect -> 22.dp timelineRoomInfo.isDM -> 22.dp
else -> 22.dp + BUBBLE_INCOMING_OFFSET else -> 22.dp + BUBBLE_INCOMING_OFFSET
}, },
end = 16.dp end = 16.dp

4
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, groupPosition = TimelineItemGroupPosition.First,
), ),
timelineRoomInfo = aTimelineRoomInfo( timelineRoomInfo = aTimelineRoomInfo(
isDirect = true, isDM = true,
), ),
) )
ATimelineItemEventRow( ATimelineItemEventRow(
@ -53,7 +53,7 @@ internal fun TimelineItemEventRowForDirectRoomPreview() = ElementPreview {
groupPosition = TimelineItemGroupPosition.Last, groupPosition = TimelineItemGroupPosition.Last,
), ),
timelineRoomInfo = aTimelineRoomInfo( timelineRoomInfo = aTimelineRoomInfo(
isDirect = true, isDM = true,
), ),
) )
} }

Loading…
Cancel
Save