Add topic and room name to the state
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -30,6 +30,8 @@ open class ConfigureRoomStateProvider : PreviewParameterProvider<ConfigureRoomSt
|
||||
|
||||
fun aConfigureRoomState() = ConfigureRoomState(
|
||||
selectedUsers = aMatrixUserList().toImmutableList(),
|
||||
roomName = "",
|
||||
topic = "",
|
||||
avatarUri = null,
|
||||
eventSink = {}
|
||||
)
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user