knock : display alias in knocked room item list

This commit is contained in:
ganfra 2024-10-22 15:30:59 +02:00
parent 91574d3dfa
commit b5b83660c2
2 changed files with 82 additions and 68 deletions

View file

@ -12,6 +12,7 @@ import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Arrangement.Absolute.spacedBy import androidx.compose.foundation.layout.Arrangement.Absolute.spacedBy
import androidx.compose.foundation.layout.Box
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.IntrinsicSize import androidx.compose.foundation.layout.IntrinsicSize
@ -73,78 +74,86 @@ internal fun RoomSummaryRow(
eventSink: (RoomListEvents) -> Unit, eventSink: (RoomListEvents) -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
when (room.displayType) { Box(modifier = modifier) {
RoomSummaryDisplayType.PLACEHOLDER -> { when (room.displayType) {
RoomSummaryPlaceholderRow(modifier = modifier) RoomSummaryDisplayType.PLACEHOLDER -> {
} RoomSummaryPlaceholderRow()
RoomSummaryDisplayType.INVITE -> { }
RoomSummaryScaffoldRow( RoomSummaryDisplayType.INVITE -> {
room = room, RoomSummaryScaffoldRow(
onClick = onClick, room = room,
onLongClick = { onClick = onClick,
Timber.d("Long click on invite room") onLongClick = {
}, Timber.d("Long click on invite room")
modifier = modifier },
) { ) {
InviteNameAndIndicatorRow(name = room.name) InviteNameAndIndicatorRow(name = room.name)
InviteSubtitle(isDm = room.isDm, inviteSender = room.inviteSender, canonicalAlias = room.canonicalAlias) InviteSubtitle(isDm = room.isDm, inviteSender = room.inviteSender, canonicalAlias = room.canonicalAlias)
if (!room.isDm && room.inviteSender != null) { if (!room.isDm && room.inviteSender != null) {
Spacer(modifier = Modifier.height(4.dp)) Spacer(modifier = Modifier.height(4.dp))
InviteSenderView( InviteSenderView(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
inviteSender = room.inviteSender, inviteSender = room.inviteSender,
)
}
Spacer(modifier = Modifier.height(12.dp))
InviteButtonsRow(
onAcceptClick = {
eventSink(RoomListEvents.AcceptInvite(room))
},
onDeclineClick = {
eventSink(RoomListEvents.DeclineInvite(room))
}
) )
} }
Spacer(modifier = Modifier.height(12.dp)) }
InviteButtonsRow( RoomSummaryDisplayType.ROOM -> {
onAcceptClick = { RoomSummaryScaffoldRow(
eventSink(RoomListEvents.AcceptInvite(room)) room = room,
onClick = onClick,
onLongClick = {
eventSink(RoomListEvents.ShowContextMenu(room))
}, },
onDeclineClick = { ) {
eventSink(RoomListEvents.DeclineInvite(room)) NameAndTimestampRow(
name = room.name,
timestamp = room.timestamp,
isHighlighted = room.isHighlighted
)
LastMessageAndIndicatorRow(room = room)
}
}
RoomSummaryDisplayType.KNOCKED -> {
RoomSummaryScaffoldRow(
room = room,
onClick = onClick,
onLongClick = {
Timber.d("Long click on knocked room")
},
) {
NameAndTimestampRow(
name = room.name,
timestamp = null,
isHighlighted = room.isHighlighted
)
if (room.canonicalAlias != null) {
Text(
text = room.canonicalAlias.value,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
style = ElementTheme.typography.fontBodyMdRegular,
color = ElementTheme.colors.textSecondary,
)
Spacer(modifier = Modifier.height(4.dp))
} }
) Text(
} text = stringResource(id = R.string.screen_join_room_knock_sent_title),
} maxLines = 1,
RoomSummaryDisplayType.ROOM -> { overflow = TextOverflow.Ellipsis,
RoomSummaryScaffoldRow( style = ElementTheme.typography.fontBodyMdRegular,
room = room, color = ElementTheme.colors.textSecondary,
onClick = onClick, )
onLongClick = { }
eventSink(RoomListEvents.ShowContextMenu(room))
},
modifier = modifier
) {
NameAndTimestampRow(
name = room.name,
timestamp = room.timestamp,
isHighlighted = room.isHighlighted
)
LastMessageAndIndicatorRow(room = room)
}
}
RoomSummaryDisplayType.KNOCKED -> {
RoomSummaryScaffoldRow(
room = room,
onClick = onClick,
onLongClick = {
Timber.d("Long click on knocked room")
},
modifier = modifier
) {
NameAndTimestampRow(
name = room.name,
timestamp = room.timestamp,
isHighlighted = room.isHighlighted
)
Text(
text = stringResource(id = R.string.screen_join_room_knock_sent_title),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
style = ElementTheme.typography.fontBodyMdRegular,
color = ElementTheme.colors.textSecondary,
modifier = modifier,
)
} }
} }
} }

View file

@ -105,6 +105,11 @@ open class RoomListRoomSummaryProvider : PreviewParameterProvider<RoomListRoomSu
aRoomListRoomSummary( aRoomListRoomSummary(
name = "A knocked room", name = "A knocked room",
displayType = RoomSummaryDisplayType.KNOCKED, displayType = RoomSummaryDisplayType.KNOCKED,
),
aRoomListRoomSummary(
name = "A knocked room with alias",
canonicalAlias = RoomAlias("#knockable:matrix.org"),
displayType = RoomSummaryDisplayType.KNOCKED,
) )
), ),
).flatten() ).flatten()