Add parameter to avoid copy of objects.

This commit is contained in:
Benoit Marty 2024-02-22 14:43:17 +01:00
parent 48e8900a2c
commit 5a80f89e12

View file

@ -17,7 +17,9 @@
package io.element.android.features.roomdetails.impl package io.element.android.features.roomdetails.impl
import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.features.leaveroom.api.LeaveRoomState
import io.element.android.features.leaveroom.api.aLeaveRoomState import io.element.android.features.leaveroom.api.aLeaveRoomState
import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsState
import io.element.android.features.roomdetails.impl.members.details.aRoomMemberDetailsState import io.element.android.features.roomdetails.impl.members.details.aRoomMemberDetailsState
import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomMember
@ -29,15 +31,15 @@ open class RoomDetailsStateProvider : PreviewParameterProvider<RoomDetailsState>
override val values: Sequence<RoomDetailsState> override val values: Sequence<RoomDetailsState>
get() = sequenceOf( get() = sequenceOf(
aRoomDetailsState(), aRoomDetailsState(),
aRoomDetailsState().copy(roomTopic = RoomTopicState.Hidden), aRoomDetailsState(roomTopic = RoomTopicState.Hidden),
aRoomDetailsState().copy(roomTopic = RoomTopicState.CanAddTopic), aRoomDetailsState(roomTopic = RoomTopicState.CanAddTopic),
aRoomDetailsState().copy(isEncrypted = false), aRoomDetailsState(isEncrypted = false),
aRoomDetailsState().copy(roomAlias = null), aRoomDetailsState(roomAlias = null),
aDmRoomDetailsState().copy(roomName = "Daniel"), aDmRoomDetailsState(),
aDmRoomDetailsState(isDmMemberIgnored = true).copy(roomName = "Daniel"), aDmRoomDetailsState(isDmMemberIgnored = true),
aRoomDetailsState().copy(canInvite = true), aRoomDetailsState(canInvite = true),
aRoomDetailsState().copy(isFavorite = true), aRoomDetailsState(isFavorite = true),
aRoomDetailsState().copy( aRoomDetailsState(
canEdit = true, canEdit = true,
// Also test the roomNotificationSettings ALL_MESSAGES in the same screenshot. Icon 'Mute' should be displayed // Also test the roomNotificationSettings ALL_MESSAGES in the same screenshot. Icon 'Mute' should be displayed
roomNotificationSettings = RoomNotificationSettings(mode = RoomNotificationMode.ALL_MESSAGES, isDefault = true) roomNotificationSettings = RoomNotificationSettings(mode = RoomNotificationMode.ALL_MESSAGES, isDefault = true)
@ -68,32 +70,53 @@ fun aDmRoomMember(
role = role, role = role,
) )
fun aRoomDetailsState() = RoomDetailsState( fun aRoomDetailsState(
roomId = "a room id", roomId: String = "a room id",
roomName = "Marketing", roomName: String = "Marketing",
roomAlias = "#marketing:domain.com", roomAlias: String? = "#marketing:domain.com",
roomAvatarUrl = null, roomAvatarUrl: String? = null,
roomTopic = RoomTopicState.ExistingTopic( roomTopic: RoomTopicState = RoomTopicState.ExistingTopic(
"Welcome to #marketing, home of the Marketing team " + "Welcome to #marketing, home of the Marketing team " +
"|| WIKI PAGE: https://domain.org/wiki/Marketing " + "|| WIKI PAGE: https://domain.org/wiki/Marketing " +
"|| MAIL iki/Marketing " + "|| MAIL iki/Marketing " +
"|| MAI iki/Marketing " + "|| MAI iki/Marketing " +
"|| MAI iki/Marketing..." "|| MAI iki/Marketing..."
), ),
memberCount = 32, memberCount: Long = 32,
isEncrypted = true, isEncrypted: Boolean = true,
canInvite = false, canInvite: Boolean = false,
canEdit = false, canEdit: Boolean = false,
canShowNotificationSettings = true, canShowNotificationSettings: Boolean = true,
roomType = RoomDetailsType.Room, roomType: RoomDetailsType = RoomDetailsType.Room,
roomMemberDetailsState = null, roomMemberDetailsState: RoomMemberDetailsState? = null,
leaveRoomState = aLeaveRoomState(), leaveRoomState: LeaveRoomState = aLeaveRoomState(),
roomNotificationSettings = RoomNotificationSettings(mode = RoomNotificationMode.MUTE, isDefault = false), roomNotificationSettings: RoomNotificationSettings = RoomNotificationSettings(mode = RoomNotificationMode.MUTE, isDefault = false),
isFavorite = false, isFavorite: Boolean = false,
eventSink = {} eventSink: (RoomDetailsEvent) -> Unit = {},
) = RoomDetailsState(
roomId = roomId,
roomName = roomName,
roomAlias = roomAlias,
roomAvatarUrl = roomAvatarUrl,
roomTopic = roomTopic,
memberCount = memberCount,
isEncrypted = isEncrypted,
canInvite = canInvite,
canEdit = canEdit,
canShowNotificationSettings = canShowNotificationSettings,
roomType = roomType,
roomMemberDetailsState = roomMemberDetailsState,
leaveRoomState = leaveRoomState,
roomNotificationSettings = roomNotificationSettings,
isFavorite = isFavorite,
eventSink = eventSink
) )
fun aDmRoomDetailsState(isDmMemberIgnored: Boolean = false) = aRoomDetailsState().copy( fun aDmRoomDetailsState(
isDmMemberIgnored: Boolean = false,
roomName: String = "Daniel",
) = aRoomDetailsState(
roomName = roomName,
roomType = RoomDetailsType.Dm(aDmRoomMember(isIgnored = isDmMemberIgnored)), roomType = RoomDetailsType.Dm(aDmRoomMember(isIgnored = isDmMemberIgnored)),
roomMemberDetailsState = aRoomMemberDetailsState() roomMemberDetailsState = aRoomMemberDetailsState()
) )