diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleEvents.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleEvents.kt deleted file mode 100644 index 5d246be501..0000000000 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleEvents.kt +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) 2023 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.element.android.features.createroom.impl.addpeople - -sealed interface AddPeopleEvents diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeoplePresenter.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeoplePresenter.kt index 88e24f58b7..21ab9fafbd 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeoplePresenter.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeoplePresenter.kt @@ -18,10 +18,7 @@ package io.element.android.features.createroom.impl.addpeople import androidx.compose.runtime.Composable import io.element.android.features.createroom.impl.CreateRoomDataStore -import io.element.android.features.userlist.api.SelectionMode -import io.element.android.features.userlist.api.UserListDataSource -import io.element.android.features.userlist.api.UserListPresenter -import io.element.android.features.userlist.api.UserListPresenterArgs +import io.element.android.features.userlist.api.* import io.element.android.libraries.architecture.Presenter import javax.inject.Inject import javax.inject.Named @@ -30,7 +27,7 @@ class AddPeoplePresenter @Inject constructor( private val userListPresenterFactory: UserListPresenter.Factory, @Named("AllUsers") private val userListDataSource: UserListDataSource, private val dataStore: CreateRoomDataStore, -) : Presenter { +) : Presenter { private val userListPresenter by lazy { userListPresenterFactory.create( @@ -41,16 +38,8 @@ class AddPeoplePresenter @Inject constructor( } @Composable - override fun present(): AddPeopleState { - val userListState = userListPresenter.present() - fun handleEvents(event: AddPeopleEvents) { - // do nothing for now - } - - return AddPeopleState( - userListState = userListState, - eventSink = ::handleEvents, - ) + override fun present(): UserListState { + return userListPresenter.present() } } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleState.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleState.kt deleted file mode 100644 index 8605e1aba6..0000000000 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleState.kt +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2023 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.element.android.features.createroom.impl.addpeople - -import io.element.android.features.userlist.api.UserListState - -data class AddPeopleState( - val userListState: UserListState, - val eventSink: (AddPeopleEvents) -> Unit, -) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleStateProvider.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleStateProvider.kt index cfbf7941ce..3c9073d0d0 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleStateProvider.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleStateProvider.kt @@ -18,30 +18,27 @@ package io.element.android.features.createroom.impl.addpeople import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.features.userlist.api.SelectionMode +import io.element.android.features.userlist.api.UserListState import io.element.android.features.userlist.api.aListOfSelectedUsers import io.element.android.features.userlist.api.aUserListState +import io.element.android.libraries.matrix.ui.components.aMatrixUserList +import kotlinx.collections.immutable.toImmutableList -open class AddPeopleStateProvider : PreviewParameterProvider { - override val values: Sequence +open class AddPeopleStateProvider : PreviewParameterProvider { + override val values: Sequence get() = sequenceOf( - aAddPeopleState(), - aAddPeopleState().copy( - userListState = aUserListState().copy( - selectedUsers = aListOfSelectedUsers(), - selectionMode = SelectionMode.Multiple, - ) + aUserListState(), + aUserListState().copy( + searchResults = aMatrixUserList().toImmutableList(), + selectedUsers = aListOfSelectedUsers(), + isSearchActive = false, + selectionMode = SelectionMode.Multiple, ), - aAddPeopleState().copy( - userListState = aUserListState().copy( - selectedUsers = aListOfSelectedUsers(), - isSearchActive = true, - selectionMode = SelectionMode.Multiple, - ) + aUserListState().copy( + searchResults = aMatrixUserList().toImmutableList(), + selectedUsers = aListOfSelectedUsers(), + isSearchActive = true, + selectionMode = SelectionMode.Multiple, ) ) } - -fun aAddPeopleState() = AddPeopleState( - userListState = aUserListState(), - eventSink = {} -) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleView.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleView.kt index 9de3e0fa20..e3e7911a20 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleView.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/addpeople/AddPeopleView.kt @@ -30,6 +30,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import io.element.android.features.createroom.impl.R +import io.element.android.features.userlist.api.UserListState import io.element.android.features.userlist.api.components.UserListView import io.element.android.libraries.designsystem.components.button.BackButton import io.element.android.libraries.designsystem.preview.ElementPreviewDark @@ -44,20 +45,18 @@ import io.element.android.libraries.ui.strings.R as StringR @OptIn(ExperimentalMaterial3Api::class) @Composable fun AddPeopleView( - state: AddPeopleState, + state: UserListState, modifier: Modifier = Modifier, onBackPressed: () -> Unit = {}, onNextPressed: (List) -> Unit = {}, ) { - val eventSink = state.eventSink - Scaffold( topBar = { - if (!state.userListState.isSearchActive) { + if (!state.isSearchActive) { AddPeopleViewTopBar( - hasSelectedUsers = state.userListState.selectedUsers.isNotEmpty(), + hasSelectedUsers = state.selectedUsers.isNotEmpty(), onBackPressed = onBackPressed, - onNextPressed = { onNextPressed(state.userListState.selectedUsers) }, + onNextPressed = { onNextPressed(state.selectedUsers) }, ) } } @@ -69,7 +68,7 @@ fun AddPeopleView( ) { UserListView( modifier = Modifier.fillMaxWidth(), - state = state.userListState, + state = state, ) } } @@ -110,15 +109,15 @@ fun AddPeopleViewTopBar( @Preview @Composable -internal fun AddPeopleViewLightPreview(@PreviewParameter(AddPeopleStateProvider::class) state: AddPeopleState) = +internal fun AddPeopleViewLightPreview(@PreviewParameter(AddPeopleStateProvider::class) state: UserListState) = ElementPreviewLight { ContentToPreview(state) } @Preview @Composable -internal fun AddPeopleViewDarkPreview(@PreviewParameter(AddPeopleStateProvider::class) state: AddPeopleState) = +internal fun AddPeopleViewDarkPreview(@PreviewParameter(AddPeopleStateProvider::class) state: UserListState) = ElementPreviewDark { ContentToPreview(state) } @Composable -private fun ContentToPreview(state: AddPeopleState) { +private fun ContentToPreview(state: UserListState) { AddPeopleView(state = state) }