RoomList invites : update and remove tests

This commit is contained in:
ganfra 2024-04-16 15:45:57 +02:00
parent 8f583d78ac
commit b09269333d
24 changed files with 144 additions and 584 deletions

View file

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

View file

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

View file

@ -170,7 +170,7 @@ private fun RoomListScaffold(
)
}
internal fun RoomListRoomSummary.contentType() = type.ordinal
internal fun RoomListRoomSummary.contentType() = displayType.ordinal
@PreviewsDayNight
@Composable

View file

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

View file

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

View file

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

View file

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

View file

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