Skip to content
Snippets Groups Projects
Commit 627909fa authored by Adrien Béraud's avatar Adrien Béraud
Browse files

home: avoid disposing search early

Change-Id: Icc0dde66beec7badbd40ba8502550b6ad2eaeb38
parent 2df1e738
No related branches found
No related tags found
No related merge requests found
...@@ -73,6 +73,7 @@ import javax.inject.Inject ...@@ -73,6 +73,7 @@ import javax.inject.Inject
import com.google.android.material.search.SearchView.TransitionState import com.google.android.material.search.SearchView.TransitionState
import com.google.android.material.shape.MaterialShapeDrawable import com.google.android.material.shape.MaterialShapeDrawable
import cx.ring.databinding.FragHomeBinding import cx.ring.databinding.FragHomeBinding
import io.reactivex.rxjava3.disposables.Disposable
@AndroidEntryPoint @AndroidEntryPoint
class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(), class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(),
...@@ -84,7 +85,7 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(), ...@@ -84,7 +85,7 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(),
private var mHasPendingBadge = false private var mHasPendingBadge = false
private val mDisposable = CompositeDisposable() private val mDisposable = CompositeDisposable()
private var mSearchView: SearchView? = null private var mSearchView: SearchView? = null
private val searchDisposable = CompositeDisposable() private var searchDisposable: Disposable? = null
private var searchAdapter: SmartListAdapter? = null private var searchAdapter: SmartListAdapter? = null
private var pendingAdapter: SmartListAdapter? = null private var pendingAdapter: SmartListAdapter? = null
private val querySubject = BehaviorSubject.createDefault("") private val querySubject = BehaviorSubject.createDefault("")
...@@ -242,18 +243,13 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(), ...@@ -242,18 +243,13 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(),
// Hide floating button to avoid weird animation // Hide floating button to avoid weird animation
binding.newSwarmFab.isVisible = true binding.newSwarmFab.isVisible = true
searchDisposable.clear() searchDisposable?.dispose()
querySubject.onNext("")
searchAdapter?.update(ConversationFacade.ConversationList())
searchDisposable = null
} else if (previousState === TransitionState.HIDDEN) { // Showing } else if (previousState === TransitionState.HIDDEN) { // Showing
// Make floating button visible again
binding.newSwarmFab.isVisible = false binding.newSwarmFab.isVisible = false
startSearch()
searchDisposable.add(
mConversationFacade.getSearchResults(
mConversationFacade.currentAccountSubject, debouncedQuery
)
.observeOn(DeviceUtils.uiScheduler)
.subscribe { searchAdapter?.update(it) }
)
} }
} }
...@@ -293,6 +289,15 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(), ...@@ -293,6 +289,15 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(),
binding.root binding.root
} }
private fun startSearch() {
searchDisposable?.dispose()
val disposable = mConversationFacade.getSearchResults(debouncedQuery)
.observeOn(DeviceUtils.uiScheduler)
.subscribe { searchAdapter?.update(it) }
searchDisposable = disposable
mDisposable.add(disposable)
}
/** /**
* Expand the appBarLayoutBottom to give fixed space between it and fragmentList. * Expand the appBarLayoutBottom to give fixed space between it and fragmentList.
*/ */
...@@ -443,7 +448,6 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(), ...@@ -443,7 +448,6 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(),
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()
mDisposable.add(searchDisposable)
activity?.intent?.let { handleIntent(it) } activity?.intent?.let { handleIntent(it) }
// Subscribe on invitation pending list to show a badge counter // Subscribe on invitation pending list to show a badge counter
...@@ -491,6 +495,9 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(), ...@@ -491,6 +495,9 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(),
) )
} }
) )
if (mBinding!!.searchView.isShowing)
startSearch()
} }
override fun onStop() { override fun onStop() {
......
...@@ -433,8 +433,7 @@ class ConversationFacade( ...@@ -433,8 +433,7 @@ class ConversationFacade(
}*/ }*/
fun getSearchResults( fun getSearchResults(
currentAccount: Observable<Account>, query: Observable<String>, currentAccount: Observable<Account> = currentAccountSubject,
query: Observable<String>,
): Observable<ConversationList> = ): Observable<ConversationList> =
currentAccount.switchMap { account -> currentAccount.switchMap { account ->
Observable.combineLatest( Observable.combineLatest(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment