Add topic and room name to the state

This commit is contained in:
Florian Renaud
2023-04-04 17:41:31 +02:00
parent 97ade693f5
commit 470afea802
5 changed files with 32 additions and 8 deletions

View File

@@ -16,7 +16,10 @@
package io.element.android.features.createroom.impl.configureroom
// TODO Add your events or remove the file completely if no events
import android.net.Uri
sealed interface ConfigureRoomEvents {
object MyEvent : ConfigureRoomEvents
data class RoomNameChanged(val name: String) : ConfigureRoomEvents
data class TopicChanged(val topic: String) : ConfigureRoomEvents
data class AvatarUriChanged(val uri: Uri?) : ConfigureRoomEvents
}

View File

@@ -16,7 +16,12 @@
package io.element.android.features.createroom.impl.configureroom
import android.net.Uri
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
@@ -34,16 +39,23 @@ class ConfigureRoomPresenter @AssistedInject constructor(
@Composable
override fun present(): ConfigureRoomState {
var roomName by rememberSaveable { mutableStateOf("") }
var topic by rememberSaveable { mutableStateOf("") }
var avatarUri by rememberSaveable { mutableStateOf<Uri?>(null) }
fun handleEvents(event: ConfigureRoomEvents) {
when (event) {
ConfigureRoomEvents.MyEvent -> Unit
is ConfigureRoomEvents.AvatarUriChanged -> avatarUri = event.uri
is ConfigureRoomEvents.RoomNameChanged -> roomName = event.name
is ConfigureRoomEvents.TopicChanged -> topic = event.topic
}
}
return ConfigureRoomState(
selectedUsers = args.selectedUsers.toImmutableList(),
avatarUri = null,
roomName = roomName,
topic = topic,
avatarUri = avatarUri,
eventSink = ::handleEvents,
)
}

View File

@@ -22,6 +22,8 @@ import kotlinx.collections.immutable.ImmutableList
data class ConfigureRoomState(
val selectedUsers: ImmutableList<MatrixUser>,
val roomName: String,
val topic: String,
val avatarUri: Uri?,
val eventSink: (ConfigureRoomEvents) -> Unit
)

View File

@@ -30,6 +30,8 @@ open class ConfigureRoomStateProvider : PreviewParameterProvider<ConfigureRoomSt
fun aConfigureRoomState() = ConfigureRoomState(
selectedUsers = aMatrixUserList().toImmutableList(),
roomName = "",
topic = "",
avatarUri = null,
eventSink = {}
)

View File

@@ -81,9 +81,14 @@ fun ConfigureRoomView(
) {
RoomNameWithAvatar(
modifier = Modifier.padding(horizontal = 16.dp),
avatarUri = state.avatarUri,
roomName = state.roomName,
onRoomNameChanged = { state.eventSink(ConfigureRoomEvents.RoomNameChanged(it)) },
)
RoomTopic(
modifier = Modifier.padding(horizontal = 16.dp),
topic = state.topic,
onTopicChanged = { state.eventSink(ConfigureRoomEvents.TopicChanged(it)) },
)
SelectedUsersList(
listState = LazyListState(), // FIXME
@@ -133,8 +138,8 @@ fun ConfigureRoomToolbar(
@Composable
fun RoomNameWithAvatar(
modifier: Modifier = Modifier,
avatarUri: Uri? = null,
roomName: String = "",
avatarUri: Uri?,
roomName: String,
onAvatarClick: () -> Unit = {},
onRoomNameChanged: (String) -> Unit = {},
) {
@@ -170,7 +175,7 @@ fun RoomNameWithAvatar(
@Composable
fun Avatar(
modifier: Modifier = Modifier,
avatarUri: Uri? = null,
avatarUri: Uri?,
onClick: () -> Unit = {},
) {
val commonModifier = modifier
@@ -208,7 +213,7 @@ fun Avatar(
@Composable
fun RoomTopic(
modifier: Modifier = Modifier,
topic: String = "",
topic: String,
onTopicChanged: (String) -> Unit = {},
) {
Column(