From 09c53fc1ce3fdf85c8ce0c1920b5e903a6ae1b95 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 14 Mar 2023 15:47:43 +0100 Subject: [PATCH] Add more previews --- .../impl/root/CreateRoomRootEvents.kt | 1 + .../impl/root/CreateRoomRootPresenter.kt | 3 ++ .../impl/root/CreateRoomRootState.kt | 1 + .../impl/root/CreateRoomRootStateProvider.kt | 29 +++++++++++++++++-- .../impl/root/CreateRoomRootView.kt | 13 +++------ 5 files changed, 35 insertions(+), 12 deletions(-) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootEvents.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootEvents.kt index 7b2b42613c..ddf2003e83 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootEvents.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootEvents.kt @@ -23,4 +23,5 @@ sealed interface CreateRoomRootEvents { data class StartDM(val matrixUser: MatrixUser) : CreateRoomRootEvents object CreateRoom : CreateRoomRootEvents object InvitePeople : CreateRoomRootEvents + data class OnSearchActiveChanged(val active: Boolean) : CreateRoomRootEvents } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt index 5da23dc04d..1acb114976 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenter.kt @@ -38,6 +38,7 @@ class CreateRoomRootPresenter @Inject constructor() : Presenter> = remember { mutableStateOf(persistentListOf()) @@ -45,6 +46,7 @@ class CreateRoomRootPresenter @Inject constructor() : Presenter isSearchActive = event.active is CreateRoomRootEvents.UpdateSearchQuery -> searchQuery = event.query is CreateRoomRootEvents.StartDM -> handleStartDM(event.matrixUser) CreateRoomRootEvents.CreateRoom -> Unit // Todo Handle create room action @@ -65,6 +67,7 @@ class CreateRoomRootPresenter @Inject constructor() : Presenter Unit, + val isSearchActive: Boolean, val searchQuery: String, val searchResults: ImmutableList, ) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt index 52913ae438..5f050ab1cc 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootStateProvider.kt @@ -25,12 +25,35 @@ open class CreateRoomRootStateProvider : PreviewParameterProvider get() = sequenceOf( aCreateRoomRootState(), - // Add other state here + aCreateRoomRootState().copy(isSearchActive = true), + aCreateRoomRootState().copy(isSearchActive = true, searchQuery = "someone"), + aCreateRoomRootState().copy( + isSearchActive = true, + searchQuery = "@someone:matrix.org", + searchResults = persistentListOf( + MatrixUser(id = UserId("@someone:matrix.org")), + MatrixUser(id = UserId("@someone:matrix.org"), username = "someone"), + MatrixUser( + id = UserId("@someone_with_a_very_long_matrix_identifier:a_very_long_domain.org"), + username = "hey, I am someone with a very long display name" + ), + MatrixUser(id = UserId("@someone_2:matrix.org"), username = "someone 2"), + MatrixUser(id = UserId("@someone_3:matrix.org"), username = "someone 3"), + MatrixUser(id = UserId("@someone_4:matrix.org"), username = "someone 4"), + MatrixUser(id = UserId("@someone_5:matrix.org"), username = "someone 5"), + MatrixUser(id = UserId("@someone_6:matrix.org"), username = "someone 6"), + MatrixUser(id = UserId("@someone_7:matrix.org"), username = "someone 7"), + MatrixUser(id = UserId("@someone_8:matrix.org"), username = "someone 8"), + MatrixUser(id = UserId("@someone_9:matrix.org"), username = "someone 9"), + MatrixUser(id = UserId("@someone_10:matrix.org"), username = "someone 10"), + ) + ), ) } fun aCreateRoomRootState() = CreateRoomRootState( eventSink = {}, - searchQuery = "@someone:example.org", - searchResults = persistentListOf(MatrixUser(UserId("@someone:example.org"))), + isSearchActive = false, + searchQuery = "", + searchResults = persistentListOf(), ) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt index b729ee5e76..6d43dc8fff 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt @@ -32,10 +32,6 @@ import androidx.compose.material.icons.filled.Search import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.SearchBarDefaults 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 androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha @@ -70,11 +66,10 @@ fun CreateRoomRootView( modifier: Modifier = Modifier, onClosePressed: () -> Unit = {}, ) { - var isSearchActive by rememberSaveable { mutableStateOf(false) } Scaffold( modifier = modifier.fillMaxWidth(), topBar = { - if (!isSearchActive) { + if (!state.isSearchActive) { CreateRoomRootViewTopBar(onClosePressed = onClosePressed) } } @@ -88,13 +83,13 @@ fun CreateRoomRootView( query = state.searchQuery, placeHolderTitle = stringResource(StringR.string.search_for_someone), results = state.searchResults, - active = isSearchActive, - onActiveChanged = { isSearchActive = it }, + active = state.isSearchActive, + onActiveChanged = { state.eventSink(CreateRoomRootEvents.OnSearchActiveChanged(it)) }, onTextChanged = { state.eventSink(CreateRoomRootEvents.UpdateSearchQuery(it)) }, onResultSelected = { state.eventSink(CreateRoomRootEvents.StartDM(it)) } ) - if (!isSearchActive) { + if (!state.isSearchActive) { CreateRoomActionButtonsList( onNewRoomClicked = { state.eventSink(CreateRoomRootEvents.CreateRoom) }, onInvitePeopleClicked = { state.eventSink(CreateRoomRootEvents.InvitePeople) },