From d0158c06dcc9919cfe8952cf17d64ee6c10fae92 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <46314705+mnaturel@users.noreply.github.com> Date: Wed, 15 Mar 2023 15:21:00 +0100 Subject: [PATCH] Adding callbacks on the SelectUsersView --- .../impl/root/CreateRoomRootView.kt | 1 + .../selectusers/api/SelectUsersView.kt | 20 +++++++++++++------ 2 files changed, 15 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 46202cb691..b0791c5331 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 @@ -71,6 +71,7 @@ fun CreateRoomRootView( SelectUsersView( modifier = Modifier.fillMaxWidth(), state = state.selectUsersState, + onUserSelected = { state.eventSink.invoke(CreateRoomRootEvents.StartDM(it)) }, ) if (!state.selectUsersState.isSearchActive) { diff --git a/features/selectusers/api/src/main/kotlin/io/element/android/features/selectusers/api/SelectUsersView.kt b/features/selectusers/api/src/main/kotlin/io/element/android/features/selectusers/api/SelectUsersView.kt index 53c1c21e02..5dc17b717a 100644 --- a/features/selectusers/api/src/main/kotlin/io/element/android/features/selectusers/api/SelectUsersView.kt +++ b/features/selectusers/api/src/main/kotlin/io/element/android/features/selectusers/api/SelectUsersView.kt @@ -65,6 +65,8 @@ import io.element.android.libraries.ui.strings.R as StringR fun SelectUsersView( state: SelectUsersState, modifier: Modifier = Modifier, + onUserSelected: (MatrixUser) -> Unit = {}, + onUserDeselected: (MatrixUser) -> Unit = {}, ) { val eventSink = state.eventSink @@ -80,8 +82,14 @@ fun SelectUsersView( isMultiSelectionEnabled = state.isMultiSelectionEnabled, onActiveChanged = { eventSink.invoke(SelectUsersEvents.OnSearchActiveChanged(it)) }, onTextChanged = { state.eventSink(SelectUsersEvents.UpdateSearchQuery(it)) }, - onResultSelected = { state.eventSink(SelectUsersEvents.AddToSelection(it)) }, - onUserRemoved = { eventSink(SelectUsersEvents.RemoveFromSelection(it)) }, + onUserSelected = { + state.eventSink(SelectUsersEvents.AddToSelection(it)) + onUserSelected(it) + }, + onUserDeselected = { + eventSink(SelectUsersEvents.RemoveFromSelection(it)) + onUserDeselected(it) + }, ) } } @@ -98,8 +106,8 @@ fun SearchUserBar( placeHolderTitle: String = stringResource(StringR.string.search_for_someone), onActiveChanged: (Boolean) -> Unit = {}, onTextChanged: (String) -> Unit = {}, - onResultSelected: (MatrixUser) -> Unit = {}, - onUserRemoved: (MatrixUser) -> Unit = {}, + onUserSelected: (MatrixUser) -> Unit = {}, + onUserDeselected: (MatrixUser) -> Unit = {}, ) { val focusManager = LocalFocusManager.current @@ -152,7 +160,7 @@ fun SearchUserBar( SelectedUsersList( modifier = Modifier.padding(16.dp), selectedUsers = selectedUsers, - onUserRemoved = onUserRemoved, + onUserRemoved = onUserDeselected, ) } @@ -160,7 +168,7 @@ fun SearchUserBar( items(results) { SearchUserResultItem( matrixUser = it, - onClick = { onResultSelected(it) } + onClick = { onUserSelected(it) } ) } }