Read receipt: Open room member page when clicking on a read receipt from the bottom sheet.

This commit is contained in:
Benoit Marty 2023-11-16 14:02:06 +01:00 committed by Benoit Marty
parent 9f522b2671
commit b8cd6c2706
2 changed files with 22 additions and 6 deletions

View file

@ -70,8 +70,8 @@ import io.element.android.features.messages.impl.timeline.components.customreact
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionEvents import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionEvents
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvents import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvents
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryView import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryView
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetEvents
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheet import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheet
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetEvents
import io.element.android.features.messages.impl.timeline.components.retrysendmenu.RetrySendMenuEvents import io.element.android.features.messages.impl.timeline.components.retrysendmenu.RetrySendMenuEvents
import io.element.android.features.messages.impl.timeline.components.retrysendmenu.RetrySendMessageMenu import io.element.android.features.messages.impl.timeline.components.retrysendmenu.RetrySendMessageMenu
import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.timeline.model.TimelineItem
@ -252,7 +252,10 @@ fun MessagesView(
ReactionSummaryView(state = state.reactionSummaryState) ReactionSummaryView(state = state.reactionSummaryState)
RetrySendMessageMenu(state = state.retrySendMenuState) RetrySendMessageMenu(state = state.retrySendMenuState)
ReadReceiptBottomSheet(state = state.readReceiptBottomSheetState) ReadReceiptBottomSheet(
state = state.readReceiptBottomSheetState,
onUserDataClicked = onUserDataClicked,
)
ReinviteDialog(state = state) ReinviteDialog(state = state)
// Since the textfield is now based on an Android view, this is no longer done automatically. // Since the textfield is now based on an Android view, this is no longer done automatically.

View file

@ -16,6 +16,7 @@
package io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet package io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
@ -43,6 +44,7 @@ import kotlinx.coroutines.launch
@Composable @Composable
internal fun ReadReceiptBottomSheet( internal fun ReadReceiptBottomSheet(
state: ReadReceiptBottomSheetState, state: ReadReceiptBottomSheetState,
onUserDataClicked: (UserId) -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val isVisible = state.selectedEvent != null val isVisible = state.selectedEvent != null
@ -64,6 +66,13 @@ internal fun ReadReceiptBottomSheet(
) { ) {
ReadReceiptBottomSheetContent( ReadReceiptBottomSheetContent(
state = state, state = state,
onUserDataClicked = {
coroutineScope.launch {
sheetState.hide()
state.eventSink(ReadReceiptBottomSheetEvents.Dismiss)
onUserDataClicked.invoke(it)
}
},
) )
// FIXME remove after https://issuetracker.google.com/issues/275849044 // FIXME remove after https://issuetracker.google.com/issues/275849044
Spacer(modifier = Modifier.height(32.dp)) Spacer(modifier = Modifier.height(32.dp))
@ -74,14 +83,17 @@ internal fun ReadReceiptBottomSheet(
@Composable @Composable
private fun ColumnScope.ReadReceiptBottomSheetContent( private fun ColumnScope.ReadReceiptBottomSheetContent(
state: ReadReceiptBottomSheetState, state: ReadReceiptBottomSheetState,
onUserDataClicked: (UserId) -> Unit,
) { ) {
val receipts = state.selectedEvent?.readReceiptState?.receipts().orEmpty() val receipts = state.selectedEvent?.readReceiptState?.receipts().orEmpty()
receipts.forEach { receipts.forEach {
val userId = UserId(it.avatarData.id)
MatrixUserRow( MatrixUserRow(
modifier = Modifier.clickable { onUserDataClicked(userId) },
matrixUser = MatrixUser( matrixUser = MatrixUser(
UserId(it.avatarData.id), userId = userId,
it.avatarData.name, displayName = it.avatarData.name,
it.avatarData.url, avatarUrl = it.avatarData.url,
), ),
avatarSize = AvatarSize.ReadReceiptList, avatarSize = AvatarSize.ReadReceiptList,
trailingContent = { trailingContent = {
@ -101,7 +113,8 @@ internal fun ReadReceiptBottomSheetPreview(@PreviewParameter(ReadReceiptBottomSh
// TODO restore RetrySendMessageMenuBottomSheet once the issue with bottom sheet not being previewable is fixed // TODO restore RetrySendMessageMenuBottomSheet once the issue with bottom sheet not being previewable is fixed
Column { Column {
ReadReceiptBottomSheetContent( ReadReceiptBottomSheetContent(
state = state state = state,
onUserDataClicked = {},
) )
} }
} }