arkon пре 5 година
родитељ
комит
902700e1f4

+ 0 - 3
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadStore.kt

@@ -29,9 +29,6 @@ class DownloadStore(
      */
     private val gson: Gson by injectLazy()
 
-    /**
-     * Database helper.
-     */
     private val db: DatabaseHelper by injectLazy()
 
     /**

+ 22 - 14
app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt

@@ -19,6 +19,13 @@ import eu.kanade.tachiyomi.util.view.inflate
 import eu.kanade.tachiyomi.widget.AutofitRecyclerView
 import kotlinx.android.synthetic.main.library_category.view.fast_scroller
 import kotlinx.android.synthetic.main.library_category.view.swipe_refresh
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import reactivecircus.flowbinding.recyclerview.scrollStateChanges
+import reactivecircus.flowbinding.swiperefreshlayout.refreshes
 import rx.subscriptions.CompositeSubscription
 import uy.kohesive.injekt.injectLazy
 
@@ -30,9 +37,8 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
         FlexibleAdapter.OnItemClickListener,
         FlexibleAdapter.OnItemLongClickListener {
 
-    /**
-     * Preferences.
-     */
+    private val scope = CoroutineScope(Job() + Dispatchers.Main)
+
     private val preferences: PreferencesHelper by injectLazy()
 
     /**
@@ -83,25 +89,27 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
         swipe_refresh.addView(recycler)
         adapter.fastScroller = fast_scroller
 
-        recycler.addOnScrollListener(object : RecyclerView.OnScrollListener() {
-            override fun onScrollStateChanged(recycler: RecyclerView, newState: Int) {
+        recycler.scrollStateChanges()
+            .onEach {
                 // Disable swipe refresh when view is not at the top
                 val firstPos = (recycler.layoutManager as LinearLayoutManager)
-                        .findFirstCompletelyVisibleItemPosition()
+                    .findFirstCompletelyVisibleItemPosition()
                 swipe_refresh.isEnabled = firstPos <= 0
             }
-        })
+            .launchIn(scope)
 
         // Double the distance required to trigger sync
         swipe_refresh.setDistanceToTriggerSync((2 * 64 * resources.displayMetrics.density).toInt())
-        swipe_refresh.setOnRefreshListener {
-            if (LibraryUpdateService.start(context, category)) {
-                context.toast(R.string.updating_category)
-            }
+        swipe_refresh.refreshes()
+            .onEach {
+                if (LibraryUpdateService.start(context, category)) {
+                    context.toast(R.string.updating_category)
+                }
 
-            // It can be a very long operation, so we disable swipe refresh and show a toast.
-            swipe_refresh.isRefreshing = false
-        }
+                // It can be a very long operation, so we disable swipe refresh and show a toast.
+                swipe_refresh.isRefreshing = false
+            }
+            .launchIn(scope)
     }
 
     fun onBind(category: Category) {

+ 5 - 8
app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt

@@ -62,7 +62,7 @@ class LibrarySettingsSheet(
         private val filterGroup = FilterGroup()
 
         init {
-            addGroups(listOf(filterGroup))
+            setGroups(listOf(filterGroup))
         }
 
         /**
@@ -110,7 +110,7 @@ class LibrarySettingsSheet(
         Settings(context, attrs) {
 
         init {
-            addGroups(listOf(SortGroup()))
+            setGroups(listOf(SortGroup()))
         }
 
         inner class SortGroup : Group {
@@ -185,7 +185,7 @@ class LibrarySettingsSheet(
         Settings(context, attrs) {
 
         init {
-            addGroups(listOf(DisplayGroup(), BadgeGroup()))
+            setGroups(listOf(DisplayGroup(), BadgeGroup()))
         }
 
         inner class DisplayGroup : Group {
@@ -247,15 +247,12 @@ class LibrarySettingsSheet(
          */
         var onGroupClicked: (Group) -> Unit = {}
 
-        init {
-            addView(recycler)
-        }
-
-        fun addGroups(groups: List<Group>) {
+        fun setGroups(groups: List<Group>) {
             adapter = Adapter(groups.map { it.createItems() }.flatten())
             recycler.adapter = adapter
 
             groups.forEach { it.initModels() }
+            addView(recycler)
         }
 
         /**

+ 10 - 6
app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewActivity.kt

@@ -21,6 +21,10 @@ import eu.kanade.tachiyomi.util.system.openInBrowser
 import eu.kanade.tachiyomi.util.system.toast
 import eu.kanade.tachiyomi.util.view.invisible
 import eu.kanade.tachiyomi.util.view.visible
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import reactivecircus.flowbinding.appcompat.navigationClicks
+import reactivecircus.flowbinding.swiperefreshlayout.refreshes
 import uy.kohesive.injekt.injectLazy
 
 class WebViewActivity : BaseActivity<WebviewActivityBinding>() {
@@ -38,14 +42,14 @@ class WebViewActivity : BaseActivity<WebviewActivityBinding>() {
         title = intent.extras?.getString(TITLE_KEY)
         setSupportActionBar(binding.toolbar)
         supportActionBar?.setDisplayHomeAsUpEnabled(true)
-        binding.toolbar.setNavigationOnClickListener {
-            super.onBackPressed()
-        }
+        binding.toolbar.navigationClicks()
+            .onEach { super.onBackPressed() }
+            .launchIn(scope)
 
         binding.swipeRefresh.isEnabled = false
-        binding.swipeRefresh.setOnRefreshListener {
-            refreshPage()
-        }
+        binding.swipeRefresh.refreshes()
+            .onEach { refreshPage() }
+            .launchIn(scope)
 
         if (bundle == null) {
             val url = intent.extras!!.getString(URL_KEY) ?: return

+ 0 - 1
app/src/main/res/layout/source_filter_sheet.xml

@@ -54,7 +54,6 @@
         android:layout_height="0dp"
         android:layout_gravity="top"
         android:layout_weight="1"
-        android:paddingTop="8dp"
         android:paddingBottom="8dp" />
 
 </LinearLayout>