Add RemoveFromSelection event in room configuration screen

This commit is contained in:
Florian Renaud
2023-04-12 14:17:15 +02:00
parent 5796789a68
commit 6b3bb17bb2
3 changed files with 11 additions and 1 deletions

View File

@@ -17,11 +17,13 @@
package io.element.android.features.createroom.impl.configureroom
import android.net.Uri
import io.element.android.libraries.matrix.ui.model.MatrixUser
sealed interface ConfigureRoomEvents {
data class RoomNameChanged(val name: String) : ConfigureRoomEvents
data class TopicChanged(val topic: String) : ConfigureRoomEvents
data class AvatarUriChanged(val uri: Uri?) : ConfigureRoomEvents
data class RoomPrivacyChanged(val privacy: RoomPrivacy?) : ConfigureRoomEvents
data class RemoveFromSelection(val matrixUser: MatrixUser) : ConfigureRoomEvents
object CreateRoom : ConfigureRoomEvents
}

View File

@@ -24,6 +24,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import io.element.android.features.createroom.impl.CreateRoomConfig
import io.element.android.features.createroom.impl.CreateRoomDataStore
import io.element.android.libraries.architecture.Presenter
import kotlinx.collections.immutable.toImmutableList
import javax.inject.Inject
class ConfigureRoomPresenter @Inject constructor(
@@ -44,6 +45,13 @@ class ConfigureRoomPresenter @Inject constructor(
is ConfigureRoomEvents.RoomNameChanged -> dataStore.setCreateRoomConfig(createRoomConfig.value.copy(roomName = event.name))
is ConfigureRoomEvents.TopicChanged -> dataStore.setCreateRoomConfig(createRoomConfig.value.copy(topic = event.topic.takeUnless { it.isEmpty() }))
is ConfigureRoomEvents.RoomPrivacyChanged -> dataStore.setCreateRoomConfig(createRoomConfig.value.copy(privacy = event.privacy))
is ConfigureRoomEvents.RemoveFromSelection -> dataStore.setCreateRoomConfig(
createRoomConfig.value.copy(
invites = createRoomConfig.value.invites.minus(
event.matrixUser
).toImmutableList()
)
)
ConfigureRoomEvents.CreateRoom -> Unit
}
}

View File

@@ -106,7 +106,7 @@ fun ConfigureRoomView(
listState = selectedUsersListState,
contentPadding = PaddingValues(horizontal = 24.dp),
selectedUsers = state.config.invites,
onUserRemoved = { }, // TODO
onUserRemoved = { state.eventSink(ConfigureRoomEvents.RemoveFromSelection(it)) },
)
Spacer(Modifier.weight(1f))
RoomPrivacyOptions(