mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 19:49:33 +01:00
implement search in open conversations
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
parent
38135f845e
commit
e2dc525bf1
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,5 +11,5 @@ import io.reactivex.Observable
|
||||
|
||||
interface OpenConversationsRepository {
|
||||
|
||||
fun fetchConversations(): Observable<List<Conversation>>
|
||||
fun fetchConversations(searchTerm:String): Observable<List<Conversation>>
|
||||
}
|
||||
|
@ -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!! }
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user