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