Extension function instead of redefining uiScope everywhere

This commit is contained in:
arkon
2020-04-17 20:06:33 -04:00
parent 088160ed32
commit d9f44c1f7d
17 changed files with 57 additions and 59 deletions
@@ -27,6 +27,7 @@ import eu.kanade.tachiyomi.ui.base.controller.NucleusController
import eu.kanade.tachiyomi.ui.base.controller.popControllerWithTag
import eu.kanade.tachiyomi.ui.manga.MangaController
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
import eu.kanade.tachiyomi.util.lang.launchInUI
import eu.kanade.tachiyomi.util.system.getResourceColor
import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.view.getCoordinates
@@ -34,7 +35,6 @@ import eu.kanade.tachiyomi.util.view.gone
import eu.kanade.tachiyomi.util.view.shrinkOnScroll
import eu.kanade.tachiyomi.util.view.snack
import eu.kanade.tachiyomi.util.view.visible
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import reactivecircus.flowbinding.android.view.clicks
import reactivecircus.flowbinding.swiperefreshlayout.refreshes
@@ -95,7 +95,7 @@ class ChaptersController : NucleusController<ChaptersPresenter>(),
binding.swipeRefresh.refreshes()
.onEach { fetchChaptersFromSource() }
.launchIn(uiScope)
.launchInUI()
binding.fab.clicks()
.onEach {
@@ -117,7 +117,7 @@ class ChaptersController : NucleusController<ChaptersPresenter>(),
view.context.toast(R.string.no_next_chapter)
}
}
.launchIn(uiScope)
.launchInUI()
binding.fab.shrinkOnScroll(binding.recycler)
}
@@ -48,12 +48,12 @@ import eu.kanade.tachiyomi.ui.manga.MangaController
import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController
import eu.kanade.tachiyomi.ui.source.global_search.GlobalSearchController
import eu.kanade.tachiyomi.ui.webview.WebViewActivity
import eu.kanade.tachiyomi.util.lang.launchInUI
import eu.kanade.tachiyomi.util.lang.truncateCenter
import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.view.snack
import eu.kanade.tachiyomi.util.view.visible
import jp.wasabeef.glide.transformations.CropSquareTransformation
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import reactivecircus.flowbinding.android.view.clicks
import reactivecircus.flowbinding.android.view.longClicks
@@ -95,12 +95,12 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
// Set onclickListener to toggle favorite when favorite button clicked.
binding.btnFavorite.clicks()
.onEach { onFavoriteClick() }
.launchIn(uiScope)
.launchInUI()
// Set onLongClickListener to manage categories when favorite button is clicked.
binding.btnFavorite.longClicks()
.onEach { onFavoriteLongClick() }
.launchIn(uiScope)
.launchInUI()
if (presenter.source is HttpSource) {
binding.btnWebview.visible()
@@ -108,64 +108,64 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
binding.btnWebview.clicks()
.onEach { openInWebView() }
.launchIn(uiScope)
.launchInUI()
binding.btnShare.clicks()
.onEach { shareManga() }
.launchIn(uiScope)
.launchInUI()
}
// Set SwipeRefresh to refresh manga data.
binding.swipeRefresh.refreshes()
.onEach { fetchMangaFromSource() }
.launchIn(uiScope)
.launchInUI()
binding.mangaFullTitle.longClicks()
.onEach {
copyToClipboard(view.context.getString(R.string.title), binding.mangaFullTitle.text.toString())
}
.launchIn(uiScope)
.launchInUI()
binding.mangaFullTitle.clicks()
.onEach {
performGlobalSearch(binding.mangaFullTitle.text.toString())
}
.launchIn(uiScope)
.launchInUI()
binding.mangaArtist.longClicks()
.onEach {
copyToClipboard(binding.mangaArtistLabel.text.toString(), binding.mangaArtist.text.toString())
}
.launchIn(uiScope)
.launchInUI()
binding.mangaArtist.clicks()
.onEach {
performGlobalSearch(binding.mangaArtist.text.toString())
}
.launchIn(uiScope)
.launchInUI()
binding.mangaAuthor.longClicks()
.onEach {
copyToClipboard(binding.mangaAuthor.text.toString(), binding.mangaAuthor.text.toString())
}
.launchIn(uiScope)
.launchInUI()
binding.mangaAuthor.clicks()
.onEach {
performGlobalSearch(binding.mangaAuthor.text.toString())
}
.launchIn(uiScope)
.launchInUI()
binding.mangaSummary.longClicks()
.onEach {
copyToClipboard(view.context.getString(R.string.description), binding.mangaSummary.text.toString())
}
.launchIn(uiScope)
.launchInUI()
binding.mangaCover.longClicks()
.onEach {
copyToClipboard(view.context.getString(R.string.title), presenter.manga.title)
}
.launchIn(uiScope)
.launchInUI()
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
@@ -11,8 +11,8 @@ import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.databinding.TrackControllerBinding
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
import eu.kanade.tachiyomi.ui.manga.MangaController
import eu.kanade.tachiyomi.util.lang.launchInUI
import eu.kanade.tachiyomi.util.system.toast
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import reactivecircus.flowbinding.swiperefreshlayout.refreshes
import timber.log.Timber
@@ -51,7 +51,7 @@ class TrackController : NucleusController<TrackPresenter>(),
binding.swipeRefresh.isEnabled = false
binding.swipeRefresh.refreshes()
.onEach { presenter.refresh() }
.launchIn(uiScope)
.launchInUI()
}
override fun onDestroyView(view: View) {
@@ -10,6 +10,7 @@ import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.data.track.model.TrackSearch
import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.util.lang.launchInUI
import eu.kanade.tachiyomi.util.view.invisible
import eu.kanade.tachiyomi.util.view.visible
import java.util.concurrent.TimeUnit
@@ -18,7 +19,6 @@ import kotlinx.android.synthetic.main.track_search_dialog.view.track_search
import kotlinx.android.synthetic.main.track_search_dialog.view.track_search_list
import kotlinx.coroutines.flow.debounce
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
import reactivecircus.flowbinding.android.widget.itemClicks
@@ -80,7 +80,7 @@ class TrackSearchDialog : DialogController {
.onEach { position ->
selectedItem = adapter.getItem(position)
}
.launchIn(uiScope)
.launchInUI()
// Do an initial search based on the manga's title
if (savedState == null) {
@@ -99,11 +99,11 @@ class TrackSearchDialog : DialogController {
override fun onAttach(view: View) {
super.onAttach(view)
dialogView!!.track_search.textChanges()
.debounce(TimeUnit.SECONDS.toMillis(1))
.map { it.toString() }
.filter { it.isNotBlank() }
.onEach { search(it) }
.launchIn(uiScope)
.debounce(TimeUnit.SECONDS.toMillis(1))
.map { it.toString() }
.filter { it.isNotBlank() }
.onEach { search(it) }
.launchInUI()
}
private fun search(query: String) {