RoomList invites : update and remove tests
This commit is contained in:
parent
8f583d78ac
commit
b09269333d
24 changed files with 144 additions and 584 deletions
|
|
@ -74,6 +74,7 @@ import kotlinx.coroutines.flow.map
|
|||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.takeWhile
|
||||
import kotlinx.coroutines.launch
|
||||
import org.jetbrains.annotations.VisibleForTesting
|
||||
import javax.inject.Inject
|
||||
|
||||
private const val EXTENDED_RANGE_SIZE = 40
|
||||
|
|
@ -292,10 +293,11 @@ class RoomListPresenter @Inject constructor(
|
|||
val extendedRange = IntRange(extendedRangeStart, extendedRangeEnd)
|
||||
client.roomListService.updateAllRoomsVisibleRange(extendedRange)
|
||||
}
|
||||
|
||||
private fun RoomListRoomSummary.toInviteData() = InviteData(
|
||||
roomId = roomId,
|
||||
roomName = name,
|
||||
isDirect = isDirect,
|
||||
)
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
internal fun RoomListRoomSummary.toInviteData() = InviteData(
|
||||
roomId = roomId,
|
||||
roomName = name,
|
||||
isDirect = isDirect,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,8 @@ import io.element.android.features.leaveroom.api.LeaveRoomState
|
|||
import io.element.android.features.leaveroom.api.aLeaveRoomState
|
||||
import io.element.android.features.roomlist.impl.filters.RoomListFiltersState
|
||||
import io.element.android.features.roomlist.impl.filters.aRoomListFiltersState
|
||||
import io.element.android.features.roomlist.impl.model.DisplayType
|
||||
import io.element.android.features.roomlist.impl.model.RoomSummaryDisplayType
|
||||
import io.element.android.features.roomlist.impl.model.InviteSender
|
||||
import io.element.android.features.roomlist.impl.model.RoomListRoomSummary
|
||||
import io.element.android.features.roomlist.impl.model.aRoomListRoomSummary
|
||||
import io.element.android.features.roomlist.impl.search.RoomListSearchState
|
||||
|
|
@ -83,6 +84,17 @@ internal fun aRoomListState(
|
|||
|
||||
internal fun aRoomListRoomSummaryList(): ImmutableList<RoomListRoomSummary> {
|
||||
return persistentListOf(
|
||||
aRoomListRoomSummary(
|
||||
name = "Room Invited",
|
||||
avatarData = AvatarData("!roomId", "Room with Alice and Bob", size = AvatarSize.RoomListItem),
|
||||
id = "!roomId:domain",
|
||||
inviteSender = InviteSender(
|
||||
userId = UserId("@bob:domain"),
|
||||
displayName = "Bob",
|
||||
avatarData = AvatarData("@bob:domain", "Bob", size = AvatarSize.InviteSender),
|
||||
),
|
||||
displayType = RoomSummaryDisplayType.INVITE,
|
||||
),
|
||||
aRoomListRoomSummary(
|
||||
name = "Room",
|
||||
numberOfUnreadMessages = 1,
|
||||
|
|
@ -101,11 +113,11 @@ internal fun aRoomListRoomSummaryList(): ImmutableList<RoomListRoomSummary> {
|
|||
),
|
||||
aRoomListRoomSummary(
|
||||
id = "!roomId3:domain",
|
||||
displayType = DisplayType.PLACEHOLDER,
|
||||
displayType = RoomSummaryDisplayType.PLACEHOLDER,
|
||||
),
|
||||
aRoomListRoomSummary(
|
||||
id = "!roomId4:domain",
|
||||
displayType = DisplayType.PLACEHOLDER,
|
||||
displayType = RoomSummaryDisplayType.PLACEHOLDER,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -170,7 +170,7 @@ private fun RoomListScaffold(
|
|||
)
|
||||
}
|
||||
|
||||
internal fun RoomListRoomSummary.contentType() = type.ordinal
|
||||
internal fun RoomListRoomSummary.contentType() = displayType.ordinal
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ import androidx.compose.ui.unit.dp
|
|||
import io.element.android.compound.theme.ElementTheme
|
||||
import io.element.android.compound.tokens.generated.CompoundIcons
|
||||
import io.element.android.features.roomlist.impl.RoomListEvents
|
||||
import io.element.android.features.roomlist.impl.model.DisplayType
|
||||
import io.element.android.features.roomlist.impl.model.RoomSummaryDisplayType
|
||||
import io.element.android.features.roomlist.impl.model.InviteSender
|
||||
import io.element.android.features.roomlist.impl.model.RoomListRoomSummary
|
||||
import io.element.android.features.roomlist.impl.model.RoomListRoomSummaryProvider
|
||||
|
|
@ -78,11 +78,11 @@ internal fun RoomSummaryRow(
|
|||
eventSink: (RoomListEvents) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
when (room.type) {
|
||||
DisplayType.PLACEHOLDER -> {
|
||||
when (room.displayType) {
|
||||
RoomSummaryDisplayType.PLACEHOLDER -> {
|
||||
RoomSummaryPlaceholderRow(modifier = modifier)
|
||||
}
|
||||
DisplayType.INVITE -> {
|
||||
RoomSummaryDisplayType.INVITE -> {
|
||||
RoomSummaryScaffoldRow(
|
||||
room = room,
|
||||
onClick = onClick,
|
||||
|
|
@ -107,7 +107,7 @@ internal fun RoomSummaryRow(
|
|||
})
|
||||
}
|
||||
}
|
||||
DisplayType.ROOM -> {
|
||||
RoomSummaryDisplayType.ROOM -> {
|
||||
RoomSummaryScaffoldRow(
|
||||
room = room,
|
||||
onClick = onClick,
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ package io.element.android.features.roomlist.impl.datasource
|
|||
|
||||
import io.element.android.features.roomlist.impl.model.InviteSender
|
||||
import io.element.android.features.roomlist.impl.model.RoomListRoomSummary
|
||||
import io.element.android.features.roomlist.impl.model.DisplayType
|
||||
import io.element.android.features.roomlist.impl.model.RoomSummaryDisplayType
|
||||
import io.element.android.libraries.core.extensions.orEmpty
|
||||
import io.element.android.libraries.dateformatter.api.LastMessageTimestampFormatter
|
||||
import io.element.android.libraries.designsystem.components.avatar.AvatarData
|
||||
|
|
@ -38,7 +38,7 @@ class RoomListRoomSummaryFactory @Inject constructor(
|
|||
return RoomListRoomSummary(
|
||||
id = id,
|
||||
roomId = RoomId(id),
|
||||
type = DisplayType.PLACEHOLDER,
|
||||
displayType = RoomSummaryDisplayType.PLACEHOLDER,
|
||||
name = "Short name",
|
||||
timestamp = "hh:mm",
|
||||
lastMessage = "Last message for placeholder",
|
||||
|
|
@ -95,10 +95,10 @@ class RoomListRoomSummaryFactory @Inject constructor(
|
|||
)
|
||||
},
|
||||
canonicalAlias = roomSummary.details.canonicalAlias,
|
||||
type = if (roomSummary.details.currentUserMembership == CurrentUserMembership.INVITED) {
|
||||
DisplayType.INVITE
|
||||
displayType = if (roomSummary.details.currentUserMembership == CurrentUserMembership.INVITED) {
|
||||
RoomSummaryDisplayType.INVITE
|
||||
} else {
|
||||
DisplayType.ROOM
|
||||
RoomSummaryDisplayType.ROOM
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import io.element.android.libraries.matrix.api.room.RoomNotificationMode
|
|||
@Immutable
|
||||
data class RoomListRoomSummary(
|
||||
val id: String,
|
||||
val type: DisplayType,
|
||||
val displayType: RoomSummaryDisplayType,
|
||||
val roomId: RoomId,
|
||||
val name: String,
|
||||
val canonicalAlias: String?,
|
||||
|
|
@ -45,11 +45,11 @@ data class RoomListRoomSummary(
|
|||
val isHighlighted = userDefinedNotificationMode != RoomNotificationMode.MUTE &&
|
||||
(numberOfUnreadNotifications > 0 || numberOfUnreadMentions > 0) ||
|
||||
isMarkedUnread ||
|
||||
type == DisplayType.INVITE
|
||||
displayType == RoomSummaryDisplayType.INVITE
|
||||
|
||||
val hasNewContent = numberOfUnreadMessages > 0 ||
|
||||
numberOfUnreadMentions > 0 ||
|
||||
numberOfUnreadNotifications > 0 ||
|
||||
isMarkedUnread ||
|
||||
type == DisplayType.INVITE
|
||||
displayType == RoomSummaryDisplayType.INVITE
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ open class RoomListRoomSummaryProvider : PreviewParameterProvider<RoomListRoomSu
|
|||
override val values: Sequence<RoomListRoomSummary>
|
||||
get() = sequenceOf(
|
||||
listOf(
|
||||
aRoomListRoomSummary(displayType = DisplayType.PLACEHOLDER),
|
||||
aRoomListRoomSummary(displayType = RoomSummaryDisplayType.PLACEHOLDER),
|
||||
aRoomListRoomSummary(),
|
||||
aRoomListRoomSummary(lastMessage = null),
|
||||
aRoomListRoomSummary(
|
||||
|
|
@ -83,7 +83,7 @@ open class RoomListRoomSummaryProvider : PreviewParameterProvider<RoomListRoomSu
|
|||
}.flatten(),
|
||||
listOf(
|
||||
aRoomListRoomSummary(
|
||||
displayType = DisplayType.INVITE,
|
||||
displayType = RoomSummaryDisplayType.INVITE,
|
||||
inviteSender = InviteSender(
|
||||
userId = UserId("@alice:matrix.org"),
|
||||
displayName = "Alice",
|
||||
|
|
@ -93,7 +93,7 @@ open class RoomListRoomSummaryProvider : PreviewParameterProvider<RoomListRoomSu
|
|||
),
|
||||
aRoomListRoomSummary(
|
||||
name = "Bob",
|
||||
displayType = DisplayType.INVITE,
|
||||
displayType = RoomSummaryDisplayType.INVITE,
|
||||
inviteSender = InviteSender(
|
||||
userId = UserId("@bob:matrix.org"),
|
||||
displayName = "Bob",
|
||||
|
|
@ -120,7 +120,7 @@ internal fun aRoomListRoomSummary(
|
|||
isDirect: Boolean = false,
|
||||
isFavorite: Boolean = false,
|
||||
inviteSender: InviteSender? = null,
|
||||
displayType: DisplayType = DisplayType.ROOM,
|
||||
displayType: RoomSummaryDisplayType = RoomSummaryDisplayType.ROOM,
|
||||
canonicalAlias: String? = null,
|
||||
) = RoomListRoomSummary(
|
||||
id = id,
|
||||
|
|
@ -138,6 +138,6 @@ internal fun aRoomListRoomSummary(
|
|||
isDirect = isDirect,
|
||||
isFavorite = isFavorite,
|
||||
inviteSender = inviteSender,
|
||||
type = displayType,
|
||||
displayType = displayType,
|
||||
canonicalAlias = canonicalAlias,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ package io.element.android.features.roomlist.impl.model
|
|||
/**
|
||||
* Represents the type of display for a room list item.
|
||||
*/
|
||||
enum class DisplayType {
|
||||
enum class RoomSummaryDisplayType {
|
||||
PLACEHOLDER,
|
||||
ROOM,
|
||||
INVITE
|
||||
Loading…
Add table
Add a link
Reference in a new issue