Merge pull request #2537 from element-hq/feature/fga/fix_timeline_is_direct

Bugfix : fix timeline not showing sender info
This commit is contained in:
ganfra
2024-03-13 11:17:29 +01:00
committed by GitHub
8 changed files with 12 additions and 10 deletions

1
changelog.d/2530.bugfix Normal file
View File

@@ -0,0 +1 @@
Fix timeline not showing sender info when room is marked as direct but not a 1:1 room.

View File

@@ -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,
)

View File

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

View File

@@ -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,
)

View File

@@ -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)
}

View File

@@ -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)
}
}

View File

@@ -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

View File

@@ -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,
),
)
}