Mostly migrate rxbinding to Kotlin Flow version

This commit is contained in:
arkon
2020-04-16 23:04:00 -04:00
parent fae763dbb0
commit bdf322ceb0
12 changed files with 238 additions and 134 deletions
@@ -14,7 +14,6 @@ import com.bluelinelabs.conductor.ControllerChangeHandler
import com.bluelinelabs.conductor.ControllerChangeType
import com.bluelinelabs.conductor.RouterTransaction
import com.bluelinelabs.conductor.changehandler.FadeChangeHandler
import com.jakewharton.rxbinding.support.v7.widget.queryTextChangeEvents
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.R
@@ -31,6 +30,13 @@ import eu.kanade.tachiyomi.ui.setting.SettingsSourcesController
import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController
import eu.kanade.tachiyomi.ui.source.global_search.GlobalSearchController
import eu.kanade.tachiyomi.ui.source.latest.LatestUpdatesController
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import reactivecircus.flowbinding.appcompat.QueryTextEvent
import reactivecircus.flowbinding.appcompat.queryTextEvents
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
@@ -54,6 +60,8 @@ class SourceController : NucleusController<SourcePresenter>(),
*/
private var adapter: SourceAdapter? = null
private val uiScope = CoroutineScope(Dispatchers.Main)
private lateinit var binding: SourceMainControllerBinding
init {
@@ -192,9 +200,10 @@ class SourceController : NucleusController<SourcePresenter>(),
searchView.queryHint = applicationContext?.getString(R.string.action_global_search_hint)
// Create query listener which opens the global search view.
searchView.queryTextChangeEvents()
.filter { it.isSubmitted }
.subscribeUntilDestroy { performGlobalSearch(it.queryText().toString()) }
searchView.queryTextEvents()
.filter { it is QueryTextEvent.QuerySubmitted }
.onEach { performGlobalSearch(it.queryText.toString()) }
.launchIn(uiScope)
}
fun performGlobalSearch(query: String) {
@@ -9,7 +9,6 @@ import android.view.View
import android.view.ViewGroup
import androidx.appcompat.widget.SearchView
import androidx.recyclerview.widget.LinearLayoutManager
import com.jakewharton.rxbinding.support.v7.widget.queryTextChangeEvents
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.databinding.GlobalSearchControllerBinding
@@ -17,6 +16,13 @@ import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
import eu.kanade.tachiyomi.ui.manga.MangaController
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import reactivecircus.flowbinding.appcompat.QueryTextEvent
import reactivecircus.flowbinding.appcompat.queryTextEvents
/**
* This controller shows and manages the different search result in global search.
@@ -34,6 +40,8 @@ open class GlobalSearchController(
*/
protected var adapter: GlobalSearchAdapter? = null
private val uiScope = CoroutineScope(Dispatchers.Main)
private lateinit var binding: GlobalSearchControllerBinding
/**
@@ -119,13 +127,14 @@ open class GlobalSearchController(
}
})
searchView.queryTextChangeEvents()
.filter { it.isSubmitted }
.subscribeUntilDestroy {
presenter.search(it.queryText().toString())
searchItem.collapseActionView()
setTitle() // Update toolbar title
}
searchView.queryTextEvents()
.filter { it is QueryTextEvent.QuerySubmitted }
.onEach {
presenter.search(it.queryText.toString())
searchItem.collapseActionView()
setTitle() // Update toolbar title
}
.launchIn(uiScope)
}
/**