Revert column FlowPreference

Made loading janky
This commit is contained in:
arkon
2020-04-27 22:19:06 -04:00
parent ed6f82af0f
commit c4f1d2f153
4 changed files with 29 additions and 37 deletions
@@ -15,15 +15,14 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.list.listItems
import com.f2prateek.rx.preferences.Preference
import com.google.android.material.snackbar.Snackbar
import com.tfcporciuncula.flow.Preference
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Category
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.asImmediateFlow
import eu.kanade.tachiyomi.databinding.SourceControllerBinding
import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.LocalSource
@@ -44,16 +43,12 @@ import eu.kanade.tachiyomi.util.view.snack
import eu.kanade.tachiyomi.util.view.visible
import eu.kanade.tachiyomi.widget.AutofitRecyclerView
import eu.kanade.tachiyomi.widget.EmptyView
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.drop
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 rx.Subscription
import timber.log.Timber
import uy.kohesive.injekt.injectLazy
@@ -96,9 +91,9 @@ open class BrowseSourceController(bundle: Bundle) :
private var recycler: RecyclerView? = null
/**
* Scope for the number of manga per row flow.
* Subscription for the number of manga per row.
*/
private var numColumnsScope: CoroutineScope? = null
private var numColumnsSubscription: Subscription? = null
/**
* Endless loading item.
@@ -162,7 +157,8 @@ open class BrowseSourceController(bundle: Bundle) :
}
override fun onDestroyView(view: View) {
numColumnsScope?.cancel()
numColumnsSubscription?.unsubscribe()
numColumnsSubscription = null
adapter = null
snack = null
recycler = null
@@ -170,7 +166,7 @@ open class BrowseSourceController(bundle: Bundle) :
}
private fun setupRecycler(view: View) {
numColumnsScope?.cancel()
numColumnsSubscription?.unsubscribe()
var oldPosition = RecyclerView.NO_POSITION
val oldRecycler = binding.catalogueView.getChildAt(1)
@@ -190,14 +186,11 @@ open class BrowseSourceController(bundle: Bundle) :
}
} else {
(binding.catalogueView.inflate(R.layout.source_recycler_autofit) as AutofitRecyclerView).apply {
numColumnsScope = CoroutineScope(Job() + Dispatchers.Main)
getColumnsPreferenceForCurrentOrientation().asImmediateFlow { spanCount = it }
.drop(1)
.onEach {
// Set the adapter again to recalculate the covers height
adapter = this@BrowseSourceController.adapter
}
.launchIn(numColumnsScope!!)
numColumnsSubscription = getColumnsPreferenceForCurrentOrientation().asObservable()
.doOnNext { spanCount = it }
.skip(1)
// Set again the adapter to recalculate the covers height
.subscribe { adapter = this@BrowseSourceController.adapter }
(layoutManager as GridLayoutManager).spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {