Browse Source

Avoid using copy in RoomDetailsEditStateProvider

pull/2849/head
Benoit Marty 4 months ago
parent
commit
a4c4d6d804
  1. 55
      features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt

55
features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditStateProvider.kt

@ -20,33 +20,48 @@ import android.net.Uri
import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.ui.media.AvatarAction
import io.element.android.libraries.permissions.api.PermissionsState
import io.element.android.libraries.permissions.api.aPermissionsState import io.element.android.libraries.permissions.api.aPermissionsState
import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList
open class RoomDetailsEditStateProvider : PreviewParameterProvider<RoomDetailsEditState> { open class RoomDetailsEditStateProvider : PreviewParameterProvider<RoomDetailsEditState> {
override val values: Sequence<RoomDetailsEditState> override val values: Sequence<RoomDetailsEditState>
get() = sequenceOf( get() = sequenceOf(
aRoomDetailsEditState(), aRoomDetailsEditState(),
aRoomDetailsEditState().copy(roomTopic = ""), aRoomDetailsEditState(roomTopic = ""),
aRoomDetailsEditState().copy(roomAvatarUrl = Uri.parse("example://uri")), aRoomDetailsEditState(roomAvatarUrl = Uri.parse("example://uri")),
aRoomDetailsEditState().copy(canChangeName = true, canChangeTopic = false, canChangeAvatar = true, saveButtonEnabled = false), aRoomDetailsEditState(canChangeName = true, canChangeTopic = false, canChangeAvatar = true, saveButtonEnabled = false),
aRoomDetailsEditState().copy(canChangeName = false, canChangeTopic = true, canChangeAvatar = false, saveButtonEnabled = false), aRoomDetailsEditState(canChangeName = false, canChangeTopic = true, canChangeAvatar = false, saveButtonEnabled = false),
aRoomDetailsEditState().copy(saveAction = AsyncAction.Loading), aRoomDetailsEditState(saveAction = AsyncAction.Loading),
aRoomDetailsEditState().copy(saveAction = AsyncAction.Failure(Throwable("Whelp"))) aRoomDetailsEditState(saveAction = AsyncAction.Failure(Throwable("Whelp")))
) )
} }
fun aRoomDetailsEditState() = RoomDetailsEditState( private fun aRoomDetailsEditState(
roomId = RoomId("!aRoomId:aDomain"), roomId: RoomId = RoomId("!aRoomId:aDomain"),
roomName = "Marketing", roomName: String = "Marketing",
canChangeName = true, canChangeName: Boolean = true,
roomTopic = "a room topic that is quite long so should wrap onto multiple lines", roomTopic: String = "a room topic that is quite long so should wrap onto multiple lines",
canChangeTopic = true, canChangeTopic: Boolean = true,
roomAvatarUrl = null, roomAvatarUrl: Uri? = null,
canChangeAvatar = true, canChangeAvatar: Boolean = true,
avatarActions = persistentListOf(), avatarActions: List<AvatarAction> = emptyList(),
saveButtonEnabled = true, saveButtonEnabled: Boolean = true,
saveAction = AsyncAction.Uninitialized, saveAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
cameraPermissionState = aPermissionsState(showDialog = false), cameraPermissionState: PermissionsState = aPermissionsState(showDialog = false),
eventSink = {} eventSink: (RoomDetailsEditEvents) -> Unit = {},
) = RoomDetailsEditState(
roomId = roomId,
roomName = roomName,
canChangeName = canChangeName,
roomTopic = roomTopic,
canChangeTopic = canChangeTopic,
roomAvatarUrl = roomAvatarUrl,
canChangeAvatar = canChangeAvatar,
avatarActions = avatarActions.toImmutableList(),
saveButtonEnabled = saveButtonEnabled,
saveAction = saveAction,
cameraPermissionState = cameraPermissionState,
eventSink = eventSink,
) )

Loading…
Cancel
Save