implement search in open conversations

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2024-12-19 15:01:13 +01:00 committed by Marcel Hibbe
parent 38135f845e
commit e2dc525bf1
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
4 changed files with 17 additions and 5 deletions

View File

@ -25,6 +25,7 @@ import com.nextcloud.talk.models.json.conversations.Conversation
import com.nextcloud.talk.openconversations.adapters.OpenConversationsAdapter
import com.nextcloud.talk.openconversations.viewmodels.OpenConversationsViewModel
import com.nextcloud.talk.utils.bundle.BundleKeys
import com.vanniktech.ui.hideKeyboardAndFocus
import com.vanniktech.ui.showKeyboardAndFocus
import javax.inject.Inject
@ -69,7 +70,8 @@ class ListOpenConversationsActivity : BaseActivity() {
handleSearchUI(searching)
}
binding.editText.doOnTextChanged { text, _, _, count ->
adapter.filter(text.toString())
openConversationsViewModel.updateSearchTerm(text.toString())
openConversationsViewModel.fetchConversations()
}
initObservers()
@ -83,6 +85,7 @@ class ListOpenConversationsActivity : BaseActivity() {
} else {
binding.searchOpenConversations.visibility = View.VISIBLE
binding.textInputLayout.visibility = View.GONE
binding.editText.hideKeyboardAndFocus()
}
}

View File

@ -11,5 +11,5 @@ import io.reactivex.Observable
interface OpenConversationsRepository {
fun fetchConversations(): Observable<List<Conversation>>
fun fetchConversations(searchTerm:String): Observable<List<Conversation>>
}

View File

@ -21,10 +21,11 @@ class OpenConversationsRepositoryImpl(private val ncApi: NcApi, currentUserProvi
val apiVersion = ApiUtils.getConversationApiVersion(currentUser, intArrayOf(ApiUtils.API_V4, ApiUtils.API_V3, 1))
override fun fetchConversations(): Observable<List<Conversation>> {
override fun fetchConversations(searchTerm:String): Observable<List<Conversation>> {
val roomOverall = ncApi.getOpenConversations(
credentials,
ApiUtils.getUrlForOpenConversations(apiVersion, currentUser.baseUrl!!)
ApiUtils.getUrlForOpenConversations(apiVersion, currentUser.baseUrl!!),
searchTerm
)
return roomOverall.map { it.ocs?.data!! }
}

View File

@ -32,14 +32,22 @@ class OpenConversationsViewModel @Inject constructor(private val repository: Ope
val viewState: LiveData<ViewState>
get() = _viewState
private val _searchTerm: MutableLiveData<String> = MutableLiveData("")
val searchTerm: LiveData<String>
get() = _searchTerm
fun fetchConversations() {
_viewState.value = FetchConversationsStartState
repository.fetchConversations()
repository.fetchConversations(_searchTerm.value?: "")
.subscribeOn(Schedulers.io())
?.observeOn(AndroidSchedulers.mainThread())
?.subscribe(FetchConversationsObserver())
}
fun updateSearchTerm(newTerm: String) {
_searchTerm.value = newTerm
}
inner class FetchConversationsObserver : Observer<List<Conversation>> {
override fun onSubscribe(d: Disposable) {
// unused atm