Browse Source

Logic to store the currently selected users

test/jme/compound-poc
Maxime NATUREL 2 years ago committed by Florian Renaud
parent
commit
8c7eb3fabd
  1. 7
      features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersEvents.kt
  2. 17
      features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersPresenter.kt
  3. 4
      features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersView.kt

7
features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersEvents.kt

@ -16,4 +16,9 @@ @@ -16,4 +16,9 @@
package io.element.android.features.createroom.impl.selectmembers
sealed interface SelectMembersEvents
import io.element.android.libraries.matrix.ui.model.MatrixUser
sealed interface SelectMembersEvents {
data class AddToSelection(val matrixUser: MatrixUser) : SelectMembersEvents
data class RemoveFromSelection(val matrixUser: MatrixUser) : SelectMembersEvents
}

17
features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersPresenter.kt

@ -17,20 +17,33 @@ @@ -17,20 +17,33 @@
package io.element.android.features.createroom.impl.selectmembers
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.matrix.ui.model.MatrixUser
import javax.inject.Inject
// TODO add unit tests
class SelectMembersPresenter @Inject constructor() : Presenter<SelectMembersState> {
@Composable
override fun present(): SelectMembersState {
val selectedUsers = rememberSaveable { mutableStateOf(emptyList<MatrixUser>()) }
fun handleEvents(event: SelectMembersEvents) {
// do nothing for now
when (event) {
is SelectMembersEvents.AddToSelection -> selectedUsers.value = mutableListOf<MatrixUser>().also {
it.addAll(selectedUsers.value.plus(event.matrixUser))
}
is SelectMembersEvents.RemoveFromSelection -> selectedUsers.value = mutableListOf<MatrixUser>().also {
it.addAll(selectedUsers.value.minus(event.matrixUser))
}
}
}
return SelectMembersState(
eventSink = ::handleEvents
selectedUsers = selectedUsers.value,
eventSink = ::handleEvents,
)
}
}

4
features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/selectmembers/SelectMembersView.kt

@ -79,12 +79,12 @@ fun SelectMembersView( @@ -79,12 +79,12 @@ fun SelectMembersView(
.fillMaxSize()
.padding(padding)
) {
// TODO create a SearchUserView with multi selection option + callbacks
SelectedMembersList(
modifier = Modifier.padding(horizontal = 16.dp),
selectedUsers = state.selectedUsers,
onUserRemoved = { eventSink(SelectMembersEvents.RemoveFromSelection(it)) }
)
// TODO create ViewEvent to add/remove selected user
// TODO create a SearchUserView with multi selection option + callbacks
}
}
}

Loading…
Cancel
Save