From 9e4e4b6124df1639e0de2ac022c78b384617ff82 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Thu, 9 Mar 2023 18:46:57 +0100 Subject: [PATCH 01/16] Show result when searching for matrix id --- .../impl/root/CreateRoomRootEvents.kt | 1 + .../impl/root/CreateRoomRootPresenter.kt | 22 ++++++++++++- .../impl/root/CreateRoomRootState.kt | 8 +++-- .../impl/root/CreateRoomRootStateProvider.kt | 7 +++- .../impl/root/CreateRoomRootView.kt | 32 +++++++++++++++---- .../matrix/ui/components/MatrixUserRow.kt | 8 ++--- 6 files changed, 63 insertions(+), 15 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 2159caf0aa..4562dd53de 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 @@ -17,6 +17,7 @@ package io.element.android.features.createroom.impl.root sealed interface CreateRoomRootEvents { + data class UpdateSearchQuery(val query: String): CreateRoomRootEvents object CreateRoom : CreateRoomRootEvents object InvitePeople : 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 6ff99f421c..987534d090 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 @@ -17,7 +17,15 @@ package io.element.android.features.createroom.impl.root 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 com.bumble.appyx.core.collections.immutableListOf import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.matrix.api.core.MatrixPatterns +import io.element.android.libraries.matrix.api.core.UserId +import io.element.android.libraries.matrix.ui.model.MatrixUser import javax.inject.Inject class CreateRoomRootPresenter @Inject constructor() : Presenter { @@ -25,15 +33,27 @@ class CreateRoomRootPresenter @Inject constructor() : Presenter Unit // Todo Handle create room action CreateRoomRootEvents.InvitePeople -> Unit // Todo Handle invite people action + is CreateRoomRootEvents.UpdateSearchQuery -> { + searchQuery = event.query + } } } return CreateRoomRootState( - eventSink = ::handleEvents + eventSink = ::handleEvents, + searchQuery = searchQuery, + searchResults = searchResults, ) } } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootState.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootState.kt index 3e47b322b7..d4d09ee0fc 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootState.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootState.kt @@ -16,8 +16,12 @@ package io.element.android.features.createroom.impl.root -// TODO add your ui models. Remove the eventSink if you don't have events. +import com.bumble.appyx.core.collections.ImmutableList +import io.element.android.libraries.matrix.ui.model.MatrixUser + // Do not use default value, so no member get forgotten in the presenters. data class CreateRoomRootState( - val eventSink: (CreateRoomRootEvents) -> Unit + val eventSink: (CreateRoomRootEvents) -> Unit, + 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 4c3049d32f..ea26edb7df 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 @@ -17,6 +17,9 @@ package io.element.android.features.createroom.impl.root import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import com.bumble.appyx.core.collections.immutableListOf +import io.element.android.libraries.matrix.api.core.UserId +import io.element.android.libraries.matrix.ui.model.MatrixUser open class CreateRoomRootStateProvider : PreviewParameterProvider { override val values: Sequence @@ -27,5 +30,7 @@ open class CreateRoomRootStateProvider : PreviewParameterProvider Unit = {}, ) { - var searchText by rememberSaveable { mutableStateOf("") } var isSearchActive by rememberSaveable { mutableStateOf(false) } Scaffold( modifier = modifier.fillMaxWidth(), @@ -80,11 +82,12 @@ fun CreateRoomRootView( ) { CreateRoomSearchBar( modifier = Modifier.fillMaxWidth(), - text = searchText, + query = state.searchQuery, placeHolderTitle = stringResource(StringR.string.search_for_someone), + results = state.searchResults, active = isSearchActive, onActiveChanged = { isSearchActive = it }, - onTextChanged = { searchText = it }, + onTextChanged = { state.eventSink(CreateRoomRootEvents.UpdateSearchQuery(it)) }, ) if (!isSearchActive) { @@ -123,8 +126,9 @@ fun CreateRoomRootViewTopBar( @OptIn(ExperimentalMaterial3Api::class) @Composable fun CreateRoomSearchBar( - text: String, + query: String, placeHolderTitle: String, + results: List, active: Boolean, modifier: Modifier = Modifier, onActiveChanged: (Boolean) -> Unit = {}, @@ -138,7 +142,7 @@ fun CreateRoomSearchBar( } DockedSearchBar( - query = text, + query = query, onQueryChange = onTextChanged, onSearch = { focusManager.clearFocus() }, active = active, @@ -155,7 +159,7 @@ fun CreateRoomSearchBar( { BackButton(onClick = { onActiveChanged(false) }) } } else null, trailingIcon = when { - active && text.isNotEmpty() -> { + active && query.isNotEmpty() -> { { IconButton(onClick = { onTextChanged("") }) { Icon(Icons.Default.Close, stringResource(StringR.string.a11y_clear)) @@ -175,7 +179,9 @@ fun CreateRoomSearchBar( }, shape = if (!active) SearchBarDefaults.dockedShape else SearchBarDefaults.fullScreenShape, colors = if (!active) SearchBarDefaults.colors() else SearchBarDefaults.colors(containerColor = Color.Transparent), - content = {}, + content = { + results.forEach { CreateRoomSearchResultItem(matrixUser = it) } + }, ) } @@ -199,6 +205,18 @@ fun CreateRoomActionButtonsList( } } +@Composable +fun CreateRoomSearchResultItem( + matrixUser: MatrixUser, + modifier: Modifier = Modifier, +) { + MatrixUserRow( + modifier = modifier.heightIn(min = 56.dp), + matrixUser = matrixUser, + avatarSize = AvatarSize.SMALL, + ) +} + @Composable fun CreateRoomActionButton( @DrawableRes iconRes: Int, diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt index aaa5e35b16..3e3a769e8b 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt @@ -34,6 +34,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import io.element.android.libraries.designsystem.components.avatar.Avatar +import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.theme.components.Text @@ -45,6 +46,7 @@ import io.element.android.libraries.matrix.ui.model.getBestName fun MatrixUserRow( matrixUser: MatrixUser, modifier: Modifier = Modifier, + avatarSize: AvatarSize = matrixUser.avatarData.size, onClick: () -> Unit = {}, ) { Row( @@ -56,13 +58,11 @@ fun MatrixUserRow( verticalAlignment = Alignment.CenterVertically ) { Avatar( - matrixUser.avatarData, + matrixUser.avatarData.copy(size = avatarSize), ) Column( modifier = Modifier - .padding(start = 12.dp, end = 4.dp, top = 12.dp, bottom = 12.dp) - .alignByBaseline() - .weight(1f) + .padding(start = 12.dp, end = 4.dp, top = 12.dp, bottom = 12.dp), ) { // Name Text( From 509e658dbfcb2e07c49a5e1ec9ce07c6d63e2477 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Fri, 10 Mar 2023 01:04:41 +0100 Subject: [PATCH 02/16] Prepare search request --- .../impl/root/CreateRoomRootPresenter.kt | 42 ++++++++++++++----- .../impl/root/CreateRoomRootState.kt | 2 +- .../impl/root/CreateRoomRootStateProvider.kt | 4 +- .../impl/root/CreateRoomRootView.kt | 3 +- 4 files changed, 37 insertions(+), 14 deletions(-) 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 987534d090..f3bf0f7664 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 @@ -17,43 +17,65 @@ package io.element.android.features.createroom.impl.root import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import com.bumble.appyx.core.collections.immutableListOf import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.matrix.api.core.MatrixPatterns import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.ui.model.MatrixUser +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject class CreateRoomRootPresenter @Inject constructor() : Presenter { @Composable override fun present(): CreateRoomRootState { - var searchQuery by rememberSaveable { mutableStateOf("") } - val searchResults = if (MatrixPatterns.isUserId(searchQuery)) { - immutableListOf(MatrixUser(UserId(searchQuery))) - } else { - immutableListOf() + val searchResults: MutableState> = remember { + mutableStateOf(persistentListOf()) } fun handleEvents(event: CreateRoomRootEvents) { when (event) { CreateRoomRootEvents.CreateRoom -> Unit // Todo Handle create room action CreateRoomRootEvents.InvitePeople -> Unit // Todo Handle invite people action - is CreateRoomRootEvents.UpdateSearchQuery -> { - searchQuery = event.query - } + is CreateRoomRootEvents.UpdateSearchQuery -> searchQuery = event.query + } + } + + LaunchedEffect(searchQuery) { + searchResults.value = if (MatrixPatterns.isUserId(searchQuery)) { + persistentListOf(MatrixUser(UserId(searchQuery))) + } else { + persistentListOf() + } + if (searchQuery.isNotEmpty()) { + searchResults.value = performSearch(searchQuery) } } return CreateRoomRootState( eventSink = ::handleEvents, searchQuery = searchQuery, - searchResults = searchResults, + searchResults = searchResults.value, ) } + + private fun performSearch(query: String): ImmutableList { + val isMatrixId = MatrixPatterns.isUserId(query) + val results = mutableListOf()// TODO trigger /search request + if (isMatrixId && results.none { it.id.value == query }) { + val getProfileResult: MatrixUser? = null // TODO trigger /profile quest + val profile = getProfileResult ?: MatrixUser(UserId(query)) + results.add(0, profile) + } + return results.toImmutableList() + } } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootState.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootState.kt index d4d09ee0fc..eab793574a 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootState.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootState.kt @@ -16,8 +16,8 @@ package io.element.android.features.createroom.impl.root -import com.bumble.appyx.core.collections.ImmutableList import io.element.android.libraries.matrix.ui.model.MatrixUser +import kotlinx.collections.immutable.ImmutableList // Do not use default value, so no member get forgotten in the presenters. data class CreateRoomRootState( 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 ea26edb7df..52913ae438 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 @@ -17,9 +17,9 @@ package io.element.android.features.createroom.impl.root import androidx.compose.ui.tooling.preview.PreviewParameterProvider -import com.bumble.appyx.core.collections.immutableListOf import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.ui.model.MatrixUser +import kotlinx.collections.immutable.persistentListOf open class CreateRoomRootStateProvider : PreviewParameterProvider { override val values: Sequence @@ -32,5 +32,5 @@ open class CreateRoomRootStateProvider : PreviewParameterProvider, + results: ImmutableList, active: Boolean, modifier: Modifier = Modifier, onActiveChanged: (Boolean) -> Unit = {}, From f93bdc189b62db2ccea1477b3b0bf1616d348d3b Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Fri, 10 Mar 2023 01:16:30 +0100 Subject: [PATCH 03/16] Handle search result click --- .../createroom/impl/root/CreateRoomRootEvents.kt | 5 ++++- .../createroom/impl/root/CreateRoomRootPresenter.kt | 10 ++++++++-- .../createroom/impl/root/CreateRoomRootView.kt | 11 ++++++++++- 3 files changed, 22 insertions(+), 4 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 4562dd53de..7b2b42613c 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 @@ -16,8 +16,11 @@ package io.element.android.features.createroom.impl.root +import io.element.android.libraries.matrix.ui.model.MatrixUser + sealed interface CreateRoomRootEvents { - data class UpdateSearchQuery(val query: String): CreateRoomRootEvents + data class UpdateSearchQuery(val query: String) : CreateRoomRootEvents + data class StartDM(val matrixUser: MatrixUser) : CreateRoomRootEvents object CreateRoom : CreateRoomRootEvents object InvitePeople : 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 f3bf0f7664..5da23dc04d 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 @@ -31,6 +31,7 @@ import io.element.android.libraries.matrix.ui.model.MatrixUser import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList +import timber.log.Timber import javax.inject.Inject class CreateRoomRootPresenter @Inject constructor() : Presenter { @@ -44,9 +45,10 @@ class CreateRoomRootPresenter @Inject constructor() : Presenter searchQuery = event.query + is CreateRoomRootEvents.StartDM -> handleStartDM(event.matrixUser) CreateRoomRootEvents.CreateRoom -> Unit // Todo Handle create room action CreateRoomRootEvents.InvitePeople -> Unit // Todo Handle invite people action - is CreateRoomRootEvents.UpdateSearchQuery -> searchQuery = event.query } } @@ -72,10 +74,14 @@ class CreateRoomRootPresenter @Inject constructor() : Presenter()// TODO trigger /search request if (isMatrixId && results.none { it.id.value == query }) { - val getProfileResult: MatrixUser? = null // TODO trigger /profile quest + val getProfileResult: MatrixUser? = null // TODO trigger /profile request val profile = getProfileResult ?: MatrixUser(UserId(query)) results.add(0, profile) } return results.toImmutableList() } + + private fun handleStartDM(matrixUser: MatrixUser) { + Timber.d("handleStartDM: $matrixUser") // Todo handle start DM action + } } 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 da60d9ff2b..05e770cf96 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 @@ -89,6 +89,7 @@ fun CreateRoomRootView( active = isSearchActive, onActiveChanged = { isSearchActive = it }, onTextChanged = { state.eventSink(CreateRoomRootEvents.UpdateSearchQuery(it)) }, + onResultSelected = { state.eventSink(CreateRoomRootEvents.StartDM(it)) } ) if (!isSearchActive) { @@ -134,6 +135,7 @@ fun CreateRoomSearchBar( modifier: Modifier = Modifier, onActiveChanged: (Boolean) -> Unit = {}, onTextChanged: (String) -> Unit = {}, + onResultSelected: (MatrixUser) -> Unit = {}, ) { val focusManager = LocalFocusManager.current @@ -181,7 +183,12 @@ fun CreateRoomSearchBar( shape = if (!active) SearchBarDefaults.dockedShape else SearchBarDefaults.fullScreenShape, colors = if (!active) SearchBarDefaults.colors() else SearchBarDefaults.colors(containerColor = Color.Transparent), content = { - results.forEach { CreateRoomSearchResultItem(matrixUser = it) } + results.forEach { + CreateRoomSearchResultItem( + matrixUser = it, + onClick = { onResultSelected(it) } + ) + } }, ) } @@ -210,11 +217,13 @@ fun CreateRoomActionButtonsList( fun CreateRoomSearchResultItem( matrixUser: MatrixUser, modifier: Modifier = Modifier, + onClick: () -> Unit = {}, ) { MatrixUserRow( modifier = modifier.heightIn(min = 56.dp), matrixUser = matrixUser, avatarSize = AvatarSize.SMALL, + onClick = onClick, ) } From e8404ad62a1d1370e5e54f4f37e003040fdfa20e Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Mon, 13 Mar 2023 11:15:38 +0100 Subject: [PATCH 04/16] Update avatar size on search results --- .../createroom/impl/root/CreateRoomRootView.kt | 2 +- .../designsystem/components/avatar/AvatarSize.kt | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) 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 05e770cf96..1276d8837e 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 @@ -222,7 +222,7 @@ fun CreateRoomSearchResultItem( MatrixUserRow( modifier = modifier.heightIn(min = 56.dp), matrixUser = matrixUser, - avatarSize = AvatarSize.SMALL, + avatarSize = AvatarSize.Custom(36), onClick = onClick, ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarSize.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarSize.kt index 35689817b0..5ad7b87856 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarSize.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarSize.kt @@ -18,11 +18,15 @@ package io.element.android.libraries.designsystem.components.avatar import androidx.compose.ui.unit.dp -enum class AvatarSize(val value: Int) { - SMALL(32), - MEDIUM(40), - BIG(48), - HUGE(96); +sealed class AvatarSize(open val value: Int) { - val dp = value.dp + val dp get() = value.dp + + object SMALL : AvatarSize(32) + object MEDIUM : AvatarSize(40) + object BIG : AvatarSize(48) + object HUGE : AvatarSize(96) + + // FIXME maybe remove this field and switch back to an enum (or remove this class) when design system will be integrated + data class Custom(override val value: Int) : AvatarSize(value) } From 4e95bd9943ed425b599b4482712ea22f7f176f9c Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Mon, 13 Mar 2023 15:35:19 +0100 Subject: [PATCH 05/16] Update screenshots --- ...CreateRoomRootViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png | 4 ++-- ...reateRoomRootViewLightPreview_0_null_0,NEXUS_5,1.0,en].png | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png index 50ca99cc2a..2f113c761b 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5451d8fb06cef9a346c92db43fa5994e39f3079b67b99d867a31d9b8a645cb0d -size 19198 +oid sha256:08db5b4f160e2b418a4a3bd614baa037e5473bf2a4718c263d8ce8014a2163da +size 21357 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_0,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_0,NEXUS_5,1.0,en].png index deae75a4c1..9933846576 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_0,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_0,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:611b1efa9cf46316f96738130f326061595d2648ac7fb059df299e7c95f4e2a8 -size 18480 +oid sha256:60e1de98e058175aaafd5d29371bb7d5ce61b10e935d4158b9aeca05a9e5f38b +size 20447 From 546768e82ec7f3889f168a35c03f4da2749e3c49 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Mon, 13 Mar 2023 16:33:50 +0100 Subject: [PATCH 06/16] Add tests on search query --- .../impl/root/CreateRoomRootPresenterTests.kt | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt index e6c9155d88..f31cd3efd2 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt @@ -22,8 +22,8 @@ import app.cash.molecule.RecompositionClock import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat -import io.element.android.features.createroom.impl.root.CreateRoomRootEvents -import io.element.android.features.createroom.impl.root.CreateRoomRootPresenter +import io.element.android.libraries.matrix.api.core.UserId +import io.element.android.libraries.matrix.ui.model.MatrixUser import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runTest import org.junit.Test @@ -42,7 +42,7 @@ class CreateRoomRootPresenterTests { } @Test - fun `present - send event`() = runTest { + fun `present - trigger action buttons`() = runTest { val presenter = CreateRoomRootPresenter() moleculeFlow(RecompositionClock.Immediate) { presenter.present() @@ -52,4 +52,35 @@ class CreateRoomRootPresenterTests { initialState.eventSink(CreateRoomRootEvents.InvitePeople) // Not implemented yet } } + + @Test + fun `present - update search query`() = runTest { + val presenter = CreateRoomRootPresenter() + moleculeFlow(RecompositionClock.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + val matrixIdQuery = "@name:matrix.org" + initialState.eventSink(CreateRoomRootEvents.UpdateSearchQuery(matrixIdQuery)) + assertThat(awaitItem().searchQuery).isEqualTo(matrixIdQuery) + assertThat(awaitItem().searchResults).containsExactly(MatrixUser(UserId(matrixIdQuery))) + + val notMatrixIdQuery = "name" + initialState.eventSink(CreateRoomRootEvents.UpdateSearchQuery(notMatrixIdQuery)) + assertThat(awaitItem().searchQuery).isEqualTo(notMatrixIdQuery) + assertThat(awaitItem().searchResults).isEmpty() + } + } + + @Test + fun `present - trigger start DM action`() = runTest { + val presenter = CreateRoomRootPresenter() + moleculeFlow(RecompositionClock.Immediate) { + presenter.present() + }.test { + val initialState = awaitItem() + val matrixUser = MatrixUser(UserId("@name:matrix.org")) + initialState.eventSink(CreateRoomRootEvents.StartDM(matrixUser)) + } + } } From a83b8283f41b48056b52d53f31929c7c7e98d908 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Mon, 13 Mar 2023 17:05:35 +0100 Subject: [PATCH 07/16] Add changelog file --- changelog.d/211.wip | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/211.wip diff --git a/changelog.d/211.wip b/changelog.d/211.wip new file mode 100644 index 0000000000..ccdceb1518 --- /dev/null +++ b/changelog.d/211.wip @@ -0,0 +1 @@ +[Create and join rooms] Show a single result when searching for a matrixId From 5a20c145244078c5d2a7618a0c1552edef91fda8 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 14 Mar 2023 15:23:29 +0100 Subject: [PATCH 08/16] Set avatar size value to dp --- .../createroom/impl/root/CreateRoomRootView.kt | 2 +- .../designsystem/components/avatar/Avatar.kt | 2 +- .../designsystem/components/avatar/AvatarSize.kt | 15 +++++++-------- .../libraries/matrix/ui/media/AvatarDataExt.kt | 3 ++- 4 files changed, 11 insertions(+), 11 deletions(-) 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 1276d8837e..8d5a2f02a6 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 @@ -222,7 +222,7 @@ fun CreateRoomSearchResultItem( MatrixUserRow( modifier = modifier.heightIn(min = 56.dp), matrixUser = matrixUser, - avatarSize = AvatarSize.Custom(36), + avatarSize = AvatarSize.Custom(36.dp), onClick = onClick, ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/Avatar.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/Avatar.kt index 222d2a1502..06aa4435a0 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/Avatar.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/Avatar.kt @@ -94,7 +94,7 @@ private fun InitialsAvatar( Text( modifier = Modifier.align(Alignment.Center), text = avatarData.getInitial(), - fontSize = (avatarData.size.value / 2).sp, + fontSize = (avatarData.size.dp / 2).value.sp, color = Color.White, ) } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarSize.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarSize.kt index 5ad7b87856..97069bab6f 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarSize.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/AvatarSize.kt @@ -16,17 +16,16 @@ package io.element.android.libraries.designsystem.components.avatar +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -sealed class AvatarSize(open val value: Int) { +sealed class AvatarSize(open val dp: Dp) { - val dp get() = value.dp - - object SMALL : AvatarSize(32) - object MEDIUM : AvatarSize(40) - object BIG : AvatarSize(48) - object HUGE : AvatarSize(96) + object SMALL : AvatarSize(32.dp) + object MEDIUM : AvatarSize(40.dp) + object BIG : AvatarSize(48.dp) + object HUGE : AvatarSize(96.dp) // FIXME maybe remove this field and switch back to an enum (or remove this class) when design system will be integrated - data class Custom(override val value: Int) : AvatarSize(value) + data class Custom(override val dp: Dp) : AvatarSize(dp) } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/AvatarDataExt.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/AvatarDataExt.kt index f12842eff0..b2bf7e2140 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/AvatarDataExt.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/AvatarDataExt.kt @@ -19,8 +19,9 @@ package io.element.android.libraries.matrix.ui.media import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.libraries.matrix.api.media.MediaResolver import org.matrix.rustcomponents.sdk.mediaSourceFromUrl +import kotlin.math.roundToInt fun AvatarData.toMetadata(): MediaResolver.Meta { val mediaSource = url?.let { mediaSourceFromUrl(it) } - return MediaResolver.Meta(source = mediaSource, kind = MediaResolver.Kind.Thumbnail(size.value)) + return MediaResolver.Meta(source = mediaSource, kind = MediaResolver.Kind.Thumbnail(size.dp.value.roundToInt())) } From a137d9bc3442672d9cb38dfd1df84914d518892c Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 14 Mar 2023 15:47:16 +0100 Subject: [PATCH 09/16] Use lazyColumn for search results --- .../createroom/impl/root/CreateRoomRootView.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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 8d5a2f02a6..b729ee5e76 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 @@ -24,6 +24,8 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.Search @@ -183,11 +185,13 @@ fun CreateRoomSearchBar( shape = if (!active) SearchBarDefaults.dockedShape else SearchBarDefaults.fullScreenShape, colors = if (!active) SearchBarDefaults.colors() else SearchBarDefaults.colors(containerColor = Color.Transparent), content = { - results.forEach { - CreateRoomSearchResultItem( - matrixUser = it, - onClick = { onResultSelected(it) } - ) + LazyColumn { + items(results) { + CreateRoomSearchResultItem( + matrixUser = it, + onClick = { onResultSelected(it) } + ) + } } }, ) From 09c53fc1ce3fdf85c8ce0c1920b5e903a6ae1b95 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 14 Mar 2023 15:47:43 +0100 Subject: [PATCH 10/16] 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) }, From 74fdb342698b546e55294898e9a66722a5847b0a Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 14 Mar 2023 15:59:20 +0100 Subject: [PATCH 11/16] Move DockedSearchBar to common SearchBar --- .../createroom/impl/root/CreateRoomRootView.kt | 9 +++++---- .../components/{DockedSearchBar.kt => SearchBar.kt} | 11 +++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) rename libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/{DockedSearchBar.kt => SearchBar.kt} (91%) 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 6d43dc8fff..44fc5ea104 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 @@ -48,10 +48,10 @@ import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.theme.components.CenterAlignedTopAppBar -import io.element.android.libraries.designsystem.theme.components.DockedSearchBar import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.IconButton import io.element.android.libraries.designsystem.theme.components.Scaffold +import io.element.android.libraries.designsystem.theme.components.SearchBar import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.matrix.ui.components.MatrixUserRow import io.element.android.libraries.matrix.ui.model.MatrixUser @@ -141,7 +141,7 @@ fun CreateRoomSearchBar( focusManager.clearFocus() } - DockedSearchBar( + SearchBar( query = query, onQueryChange = onTextChanged, onSearch = { focusManager.clearFocus() }, @@ -157,7 +157,9 @@ fun CreateRoomSearchBar( }, leadingIcon = if (active) { { BackButton(onClick = { onActiveChanged(false) }) } - } else null, + } else { + null + }, trailingIcon = when { active && query.isNotEmpty() -> { { @@ -177,7 +179,6 @@ fun CreateRoomSearchBar( } else -> null }, - shape = if (!active) SearchBarDefaults.dockedShape else SearchBarDefaults.fullScreenShape, colors = if (!active) SearchBarDefaults.colors() else SearchBarDefaults.colors(containerColor = Color.Transparent), content = { LazyColumn { diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/DockedSearchBar.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt similarity index 91% rename from libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/DockedSearchBar.kt rename to libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt index 100ae259f8..aa767e21ce 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/DockedSearchBar.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/SearchBar.kt @@ -20,6 +20,7 @@ package io.element.android.libraries.designsystem.theme.components import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.SearchBarColors import androidx.compose.material3.SearchBarDefaults @@ -34,7 +35,7 @@ import io.element.android.libraries.designsystem.preview.ElementPreviewLight @OptIn(ExperimentalMaterial3Api::class) @Composable -fun DockedSearchBar( +fun SearchBar( query: String, onQueryChange: (String) -> Unit, onSearch: (String) -> Unit, @@ -45,13 +46,14 @@ fun DockedSearchBar( placeholder: @Composable (() -> Unit)? = null, leadingIcon: @Composable (() -> Unit)? = null, trailingIcon: @Composable (() -> Unit)? = null, - shape: Shape = SearchBarDefaults.dockedShape, + shape: Shape = SearchBarDefaults.inputFieldShape, colors: SearchBarColors = SearchBarDefaults.colors(), tonalElevation: Dp = SearchBarDefaults.Elevation, + windowInsets: WindowInsets = SearchBarDefaults.windowInsets, interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, content: @Composable ColumnScope.() -> Unit, ) { - androidx.compose.material3.DockedSearchBar( + androidx.compose.material3.SearchBar( query = query, onQueryChange = onQueryChange, onSearch = onSearch, @@ -65,6 +67,7 @@ fun DockedSearchBar( shape = shape, colors = colors, tonalElevation = tonalElevation, + windowInsets = windowInsets, interactionSource = interactionSource, content = content, ) @@ -80,7 +83,7 @@ internal fun DockedSearchBarDarkPreview() = ElementPreviewDark { ContentToPrevie @Composable private fun ContentToPreview() { - DockedSearchBar( + SearchBar( query = "Some text", onQueryChange = {}, onSearch = {}, From 87d50a18a5655c9d3f35a891b533d02db4830155 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 14 Mar 2023 16:13:01 +0100 Subject: [PATCH 12/16] Add comments --- .../features/createroom/impl/root/CreateRoomRootPresenter.kt | 2 ++ 1 file changed, 2 insertions(+) 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 1acb114976..828f531211 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 @@ -55,11 +55,13 @@ class CreateRoomRootPresenter @Inject constructor() : Presenter Date: Tue, 14 Mar 2023 17:07:38 +0100 Subject: [PATCH 13/16] Improve MatrixUserRow paddings --- .../features/createroom/impl/root/CreateRoomRootView.kt | 6 +++--- .../android/libraries/matrix/ui/components/MatrixUserRow.kt | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) 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 44fc5ea104..bab42c6964 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 @@ -22,7 +22,7 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items @@ -220,7 +220,7 @@ fun CreateRoomSearchResultItem( onClick: () -> Unit = {}, ) { MatrixUserRow( - modifier = modifier.heightIn(min = 56.dp), + modifier = modifier, matrixUser = matrixUser, avatarSize = AvatarSize.Custom(36.dp), onClick = onClick, @@ -237,7 +237,7 @@ fun CreateRoomActionButton( Row( modifier = modifier .fillMaxWidth() - .heightIn(min = 56.dp) + .height(56.dp) .clickable { onClick() } .padding(horizontal = 16.dp), horizontalArrangement = Arrangement.spacedBy(16.dp), diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt index 3e3a769e8b..035f2d3824 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserRow.kt @@ -41,7 +41,6 @@ import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.matrix.ui.model.MatrixUser import io.element.android.libraries.matrix.ui.model.getBestName -// FIXME Row are not the same height if there is a name or not. @Composable fun MatrixUserRow( matrixUser: MatrixUser, @@ -53,7 +52,7 @@ fun MatrixUserRow( modifier = modifier .clickable(onClick = onClick) .fillMaxWidth() - .padding(horizontal = 16.dp) + .padding(start = 16.dp, top = 8.dp, end = 16.dp, bottom = 8.dp) .height(IntrinsicSize.Min), verticalAlignment = Alignment.CenterVertically ) { @@ -62,7 +61,7 @@ fun MatrixUserRow( ) Column( modifier = Modifier - .padding(start = 12.dp, end = 4.dp, top = 12.dp, bottom = 12.dp), + .padding(start = 12.dp), ) { // Name Text( From 7d2fdc3cdd0aa0602e50e334e94a174b30fa2257 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 14 Mar 2023 17:09:06 +0100 Subject: [PATCH 14/16] Update screenshots tests --- ...CreateRoomRootViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png | 4 ++-- ...reateRoomRootViewLightPreview_0_null_0,NEXUS_5,1.0,en].png | 4 ++-- ...roup_DockedSearchBarDarkPreview_0_null,NEXUS_5,1.0,en].png | 4 ++-- ...oup_DockedSearchBarLightPreview_0_null,NEXUS_5,1.0,en].png | 4 ++-- ...roup_MatrixUserRowDarkPreview_0_null_0,NEXUS_5,1.0,en].png | 4 ++-- ...roup_MatrixUserRowDarkPreview_0_null_1,NEXUS_5,1.0,en].png | 4 ++-- ...oup_MatrixUserRowLightPreview_0_null_0,NEXUS_5,1.0,en].png | 4 ++-- ...oup_MatrixUserRowLightPreview_0_null_1,NEXUS_5,1.0,en].png | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png index 2f113c761b..c963070276 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_0,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08db5b4f160e2b418a4a3bd614baa037e5473bf2a4718c263d8ce8014a2163da -size 21357 +oid sha256:0161ce815927b9a7f21060d94a9e98cc67b832c945d7437848b118731aace5c4 +size 19221 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_0,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_0,NEXUS_5,1.0,en].png index 9933846576..00e81b473c 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_0,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_0,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60e1de98e058175aaafd5d29371bb7d5ce61b10e935d4158b9aeca05a9e5f38b -size 20447 +oid sha256:07e26a6494155ad18acc5da1a9151ffb02910185a3d0a516884848d7b045e640 +size 18434 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.designsystem.theme.components_null_DefaultGroup_DockedSearchBarDarkPreview_0_null,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.designsystem.theme.components_null_DefaultGroup_DockedSearchBarDarkPreview_0_null,NEXUS_5,1.0,en].png index 638282389c..71d010641b 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.designsystem.theme.components_null_DefaultGroup_DockedSearchBarDarkPreview_0_null,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.designsystem.theme.components_null_DefaultGroup_DockedSearchBarDarkPreview_0_null,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e89807d72107f1f8337e8de803791249b56bde6c4961805520195ea55563749a -size 8470 +oid sha256:5ba2ec897834fa0db2751c2c8a7b4427e278cf4711bed3fecf75937c080d42ba +size 8534 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.designsystem.theme.components_null_DefaultGroup_DockedSearchBarLightPreview_0_null,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.designsystem.theme.components_null_DefaultGroup_DockedSearchBarLightPreview_0_null,NEXUS_5,1.0,en].png index 2cc70fcb06..3fc73a2067 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.designsystem.theme.components_null_DefaultGroup_DockedSearchBarLightPreview_0_null,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.designsystem.theme.components_null_DefaultGroup_DockedSearchBarLightPreview_0_null,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6381c125b8eaf6b116218bc4b0efda4866f19514139f4b45604909e462931c1f -size 8320 +oid sha256:75923126de5b769aa04de9214af14e3aec23e91b85f5a4c8d57c21025850ec1b +size 8358 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowDarkPreview_0_null_0,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowDarkPreview_0_null_0,NEXUS_5,1.0,en].png index 026e7a5402..385103eb68 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowDarkPreview_0_null_0,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowDarkPreview_0_null_0,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73594765454707aa2894d86432639edac0b59adaf554b0fe2fb7fc7e9976c4f8 -size 14445 +oid sha256:df97ab1093fd2c257f98b16fefeb28cc4a31747a7a9bda0725fa826a26c59906 +size 14299 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowDarkPreview_0_null_1,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowDarkPreview_0_null_1,NEXUS_5,1.0,en].png index 4beb170c1c..982c03bc9a 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowDarkPreview_0_null_1,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowDarkPreview_0_null_1,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e6ceaf1f7f7d8cd59327d7b88ba2136468de76542e84504a6ef689f0e58d896 -size 13695 +oid sha256:3b3649fa2543fd138246ac3281f491f2a0a1c9f38c977e57a840cd560038af2f +size 13782 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowLightPreview_0_null_0,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowLightPreview_0_null_0,NEXUS_5,1.0,en].png index 3ea8ffa5f0..fbd698355c 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowLightPreview_0_null_0,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowLightPreview_0_null_0,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ce4773eed490ebeb3ed46d534181afb90331ba1cbaab8ead7b192739beb29a6 -size 13681 +oid sha256:38556398b29c5230751f86b35b9e0b233c1ef4a84d1aa37928cc4d10a8062c9b +size 13567 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowLightPreview_0_null_1,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowLightPreview_0_null_1,NEXUS_5,1.0,en].png index 1fc816818b..311836ee17 100644 --- a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowLightPreview_0_null_1,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.libraries.matrix.ui.components_null_DefaultGroup_MatrixUserRowLightPreview_0_null_1,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c8a4a16c343f295a5270bb746024578dea8f3015ffe35a57b0ed667727d976e2 -size 13182 +oid sha256:e7a0cf84208247fe5a5a118a8e8133d79b875859a65788139b7c4459c575c5d8 +size 13226 From c5d321b32c0172904809998d2b891c812f36af3b Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 14 Mar 2023 17:16:32 +0100 Subject: [PATCH 15/16] Add unit test on search toggle --- .../createroom/impl/root/CreateRoomRootPresenterTests.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt index f31cd3efd2..c13d59f3a6 100644 --- a/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt +++ b/features/createroom/impl/src/test/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootPresenterTests.kt @@ -60,6 +60,10 @@ class CreateRoomRootPresenterTests { presenter.present() }.test { val initialState = awaitItem() + + initialState.eventSink(CreateRoomRootEvents.OnSearchActiveChanged(true)) + assertThat(awaitItem().isSearchActive).isTrue() + val matrixIdQuery = "@name:matrix.org" initialState.eventSink(CreateRoomRootEvents.UpdateSearchQuery(matrixIdQuery)) assertThat(awaitItem().searchQuery).isEqualTo(matrixIdQuery) @@ -69,6 +73,9 @@ class CreateRoomRootPresenterTests { initialState.eventSink(CreateRoomRootEvents.UpdateSearchQuery(notMatrixIdQuery)) assertThat(awaitItem().searchQuery).isEqualTo(notMatrixIdQuery) assertThat(awaitItem().searchResults).isEmpty() + + initialState.eventSink(CreateRoomRootEvents.OnSearchActiveChanged(false)) + assertThat(awaitItem().isSearchActive).isFalse() } } From 8cf5c9bfb61cf5707f17d3dc9ba678b219383f1d Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 14 Mar 2023 17:51:08 +0100 Subject: [PATCH 16/16] Add missing screenshots --- ..._CreateRoomRootViewDarkPreview_0_null_1,NEXUS_5,1.0,en].png | 3 +++ ..._CreateRoomRootViewDarkPreview_0_null_2,NEXUS_5,1.0,en].png | 3 +++ ..._CreateRoomRootViewDarkPreview_0_null_3,NEXUS_5,1.0,en].png | 3 +++ ...CreateRoomRootViewLightPreview_0_null_1,NEXUS_5,1.0,en].png | 3 +++ ...CreateRoomRootViewLightPreview_0_null_2,NEXUS_5,1.0,en].png | 3 +++ ...CreateRoomRootViewLightPreview_0_null_3,NEXUS_5,1.0,en].png | 3 +++ 6 files changed, 18 insertions(+) create mode 100644 tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_1,NEXUS_5,1.0,en].png create mode 100644 tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_2,NEXUS_5,1.0,en].png create mode 100644 tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_3,NEXUS_5,1.0,en].png create mode 100644 tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_1,NEXUS_5,1.0,en].png create mode 100644 tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_2,NEXUS_5,1.0,en].png create mode 100644 tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_3,NEXUS_5,1.0,en].png diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_1,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_1,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..f13a65f8e2 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_1,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89ea65099fb4981bbeb24e49afb7400b0e8da79e3b783e198519ba1e970404a8 +size 8317 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_2,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_2,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..74a7f599cd --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_2,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a8ba207cf61c56b64c6855d04c8a30def0b3daf325adf57edd45b40981ed745 +size 7733 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_3,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_3,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..6d7f2c5d11 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewDarkPreview_0_null_3,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6703f2cba99aa60bdf3ecd380a46846f0e1b95a0b2718ed707348b6bc1713b1 +size 107508 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_1,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_1,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..eb23dcec96 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_1,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8de2f28cf9918a7eddcc1311c34ba0376242a4708724b57689df000b7480524 +size 8197 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_2,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_2,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..e2e4a33e67 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_2,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:687133e4729ea42382ac0b76af6ceaf8b20cbc65923412fb97b077d2475c70f7 +size 7514 diff --git a/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_3,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_3,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..2746320bc2 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/io.element.android.tests.uitests_ScreenshotTest_preview_tests[io.element.android.features.createroom.impl.root_null_DefaultGroup_CreateRoomRootViewLightPreview_0_null_3,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8e1ca8a115c3e46c7f24fe41dc6c9448ffecc65a05c6be1945b84f35d60a099 +size 103642