From c476a29edbddd5d73228b3e458d5e1775ad9a5a3 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <46314705+mnaturel@users.noreply.github.com> Date: Tue, 14 Mar 2023 14:31:22 +0100 Subject: [PATCH] Removing default value in ViewState + use ImmutableList type --- .../impl/selectmembers/SelectMembersPresenter.kt | 16 ++++++++-------- .../impl/selectmembers/SelectMembersState.kt | 3 ++- .../selectmembers/SelectMembersStateProvider.kt | 7 ++++--- .../impl/selectmembers/SelectMembersView.kt | 1 + 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersPresenter.kt index ac8616985d..9ea20b3df9 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersPresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersPresenter.kt @@ -17,10 +17,14 @@ package io.element.android.features.createroom.impl.selectmembers import androidx.compose.runtime.Composable +import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.remember import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.matrix.ui.model.MatrixUser +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject // TODO add unit tests @@ -28,16 +32,12 @@ class SelectMembersPresenter @Inject constructor() : Presenter()) } + val selectedUsers: MutableState> = remember { mutableStateOf(persistentListOf()) } fun handleEvents(event: SelectMembersEvents) { when (event) { - is SelectMembersEvents.AddToSelection -> selectedUsers.value = mutableListOf().also { - it.addAll(selectedUsers.value.plus(event.matrixUser)) - } - is SelectMembersEvents.RemoveFromSelection -> selectedUsers.value = mutableListOf().also { - it.addAll(selectedUsers.value.minus(event.matrixUser)) - } + is SelectMembersEvents.AddToSelection -> selectedUsers.value = selectedUsers.value.plus(event.matrixUser).toImmutableList() + is SelectMembersEvents.RemoveFromSelection -> selectedUsers.value = selectedUsers.value.minus(event.matrixUser).toImmutableList() } } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersState.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersState.kt index bbcb205f9b..500a6e1570 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersState.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersState.kt @@ -17,8 +17,9 @@ package io.element.android.features.createroom.impl.selectmembers import io.element.android.libraries.matrix.ui.model.MatrixUser +import kotlinx.collections.immutable.ImmutableList data class SelectMembersState( - val selectedUsers: List = emptyList(), + val selectedUsers: ImmutableList, val eventSink: (SelectMembersEvents) -> Unit, ) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersStateProvider.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersStateProvider.kt index 36da523160..8b2bfa9b30 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersStateProvider.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersStateProvider.kt @@ -18,16 +18,16 @@ package io.element.android.features.createroom.impl.selectmembers import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.designsystem.components.avatar.AvatarData -import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.ui.model.MatrixUser +import kotlinx.collections.immutable.persistentListOf open class SelectMembersStateProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( aSelectMembersState(), aSelectMembersState().copy( - selectedUsers = listOf( + selectedUsers = persistentListOf( aMatrixUser(userName = "User"), aMatrixUser(userName = "User with long name"), ) @@ -36,9 +36,10 @@ open class SelectMembersStateProvider : PreviewParameterProvider