Adding multi/single selection variants

This commit is contained in:
Maxime NATUREL 2023-03-15 15:12:29 +01:00 committed by Florian Renaud
parent 2bdd528842
commit f536c6308d
12 changed files with 242 additions and 156 deletions

View file

@ -17,19 +17,19 @@
package io.element.android.features.createroom.impl.root
import androidx.compose.runtime.Composable
import io.element.android.features.selectusers.api.SelectUsersPresenter
import io.element.android.features.selectusers.api.SelectSingleUserPresenter
import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.matrix.ui.model.MatrixUser
import timber.log.Timber
import javax.inject.Inject
class CreateRoomRootPresenter @Inject constructor(
private val selectUsersPresenter: SelectUsersPresenter,
private val selectSingleUserPresenter: SelectSingleUserPresenter,
) : Presenter<CreateRoomRootState> {
@Composable
override fun present(): CreateRoomRootState {
val selectUsersState = selectUsersPresenter.present()
val selectUsersState = selectSingleUserPresenter.present()
fun handleEvents(event: CreateRoomRootEvents) {
when (event) {

View file

@ -17,10 +17,7 @@
package io.element.android.features.createroom.impl.root
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.features.selectusers.api.SelectUsersState
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.ui.model.MatrixUser
import kotlinx.collections.immutable.persistentListOf
import io.element.android.features.selectusers.api.aSelectUsersState
open class CreateRoomRootStateProvider : PreviewParameterProvider<CreateRoomRootState> {
override val values: Sequence<CreateRoomRootState>
@ -31,11 +28,5 @@ open class CreateRoomRootStateProvider : PreviewParameterProvider<CreateRoomRoot
fun aCreateRoomRootState() = CreateRoomRootState(
eventSink = {},
selectUsersState = SelectUsersState(
searchQuery = "",
searchResults = persistentListOf(),
selectedUsers = persistentListOf(),
isSearchActive = false,
eventSink = {},
)
selectUsersState = aSelectUsersState(),
)

View file

@ -24,40 +24,27 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
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
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.SearchBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import io.element.android.features.selectusers.api.SearchUserBar
import io.element.android.features.selectusers.api.SelectUsersView
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
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.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
import kotlinx.collections.immutable.ImmutableList
import io.element.android.libraries.designsystem.R as DrawableR
import io.element.android.libraries.ui.strings.R as StringR
@ -83,7 +70,7 @@ fun CreateRoomRootView(
) {
SelectUsersView(
modifier = Modifier.fillMaxWidth(),
state = state.selectUsersState
state = state.selectUsersState,
)
if (!state.selectUsersState.isSearchActive) {