Read receipt: Open room member page when clicking on a read receipt from the bottom sheet.
This commit is contained in:
parent
9f522b2671
commit
b8cd6c2706
2 changed files with 22 additions and 6 deletions
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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 = {},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue