Speed up migration cancellation

Allow migrating an entire source of manga
This commit is contained in:
NerdNumber9
2019-08-13 01:10:31 -04:00
parent 1302bc84dd
commit da12a4b17f
4 changed files with 52 additions and 2 deletions

View File

@@ -10,16 +10,27 @@ import com.afollestad.materialdialogs.MaterialDialog
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
import eu.kanade.tachiyomi.ui.base.controller.popControllerWithTag
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
import exh.ui.migration.manga.design.MigrationDesignController
import exh.util.await
import kotlinx.android.synthetic.main.migration_controller.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import rx.schedulers.Schedulers
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
class MigrationController : NucleusController<MigrationPresenter>(),
FlexibleAdapter.OnItemClickListener,
SourceAdapter.OnSelectClickListener {
SourceAdapter.OnSelectClickListener,
SourceAdapter.OnAutoClickListener {
private var adapter: FlexibleAdapter<IFlexible<*>>? = null
@@ -109,6 +120,18 @@ class MigrationController : NucleusController<MigrationPresenter>(),
onItemClick(null, position)
}
override fun onAutoClick(position: Int) {
val item = adapter?.getItem(position) as? SourceItem ?: return
GlobalScope.launch {
val manga = Injekt.get<DatabaseHelper>().getFavoriteMangas().asRxSingle().await(Schedulers.io())
val sourceMangas = manga.asSequence().filter { it.source == item.source.id }.map { it.id!! }.toList()
withContext(Dispatchers.Main) {
router.pushController(MigrationDesignController.create(sourceMangas).withFadeTransaction())
}
}
}
fun migrateManga(prevManga: Manga, manga: Manga) {
presenter.migrateManga(prevManga, manga, replace = true)
}

View File

@@ -21,6 +21,20 @@ class SourceAdapter(val controller: MigrationController) :
setDisplayHeadersAtStartUp(true)
}
// EXH -->
/**
* Listener for auto item clicks.
*/
val autoClickListener: OnAutoClickListener? = controller
/**
* Listener which should be called when user clicks select.
*/
interface OnAutoClickListener {
fun onAutoClick(position: Int)
}
// EXH <--
/**
* Listener for browse item clicks.
*/

View File

@@ -21,7 +21,10 @@ class SourceHolder(view: View, override val adapter: SourceAdapter) :
get() = card
init {
source_latest.gone()
source_latest.text = "Auto"
source_latest.setOnClickListener {
adapter.autoClickListener?.onAutoClick(adapterPosition)
}
source_browse.setText(R.string.select)
source_browse.setOnClickListener {
adapter.selectClickListener?.onSelectClick(adapterPosition)