From 470afea802c9d1a4583213aff5a92053fe516fcb Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 4 Apr 2023 17:41:31 +0200 Subject: [PATCH] Add topic and room name to the state --- .../impl/configureroom/ConfigureRoomEvents.kt | 7 +++++-- .../impl/configureroom/ConfigureRoomPresenter.kt | 16 ++++++++++++++-- .../impl/configureroom/ConfigureRoomState.kt | 2 ++ .../configureroom/ConfigureRoomStateProvider.kt | 2 ++ .../impl/configureroom/ConfigureRoomView.kt | 13 +++++++++---- 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomEvents.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomEvents.kt index d1ba2c8ebe..db90c58834 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomEvents.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomEvents.kt @@ -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 } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt index 25851e41af..56962647ad 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomPresenter.kt @@ -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(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, ) } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomState.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomState.kt index b8eee9e7bf..d8a3635d35 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomState.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomState.kt @@ -22,6 +22,8 @@ import kotlinx.collections.immutable.ImmutableList data class ConfigureRoomState( val selectedUsers: ImmutableList, + val roomName: String, + val topic: String, val avatarUri: Uri?, val eventSink: (ConfigureRoomEvents) -> Unit ) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomStateProvider.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomStateProvider.kt index 2bc7f62ee8..2838d77f23 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomStateProvider.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomStateProvider.kt @@ -30,6 +30,8 @@ open class ConfigureRoomStateProvider : PreviewParameterProvider 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(