From 1ac47217808a478af7d6de87524ecd04b31d89bd Mon Sep 17 00:00:00 2001
From: Gauthier <gotson@users.noreply.github.com>
Date: Mon, 8 Mar 2021 11:10:53 +0800
Subject: [PATCH] fix: logs and try/catch (#6092)

exception catching while building filter list (#6074)
error logs whiloe loading filter values (#6047)
---
 src/all/komga/CHANGELOG.md                    |  8 +++
 src/all/komga/build.gradle                    |  2 +-
 .../tachiyomi/extension/all/komga/Komga.kt    | 62 +++++++++++++------
 3 files changed, 52 insertions(+), 20 deletions(-)

diff --git a/src/all/komga/CHANGELOG.md b/src/all/komga/CHANGELOG.md
index a383e6550..734abc237 100644
--- a/src/all/komga/CHANGELOG.md
+++ b/src/all/komga/CHANGELOG.md
@@ -1,3 +1,11 @@
+## 1.2.22
+
+Minimum Komga version required: `0.75.0`
+
+### Features
+
+* add error logs and better catch exceptions
+
 ## 1.2.21
 
 Minimum Komga version required: `0.75.0`
diff --git a/src/all/komga/build.gradle b/src/all/komga/build.gradle
index 81da679c5..f47589531 100644
--- a/src/all/komga/build.gradle
+++ b/src/all/komga/build.gradle
@@ -5,7 +5,7 @@ ext {
     extName = 'Komga'
     pkgNameSuffix = 'all.komga'
     extClass = '.KomgaFactory'
-    extVersionCode = 21
+    extVersionCode = 22
     libVersion = '1.2'
 }
 
diff --git a/src/all/komga/src/eu/kanade/tachiyomi/extension/all/komga/Komga.kt b/src/all/komga/src/eu/kanade/tachiyomi/extension/all/komga/Komga.kt
index cab017162..9a826aa2d 100644
--- a/src/all/komga/src/eu/kanade/tachiyomi/extension/all/komga/Komga.kt
+++ b/src/all/komga/src/eu/kanade/tachiyomi/extension/all/komga/Komga.kt
@@ -5,6 +5,7 @@ import android.content.SharedPreferences
 import android.support.v7.preference.EditTextPreference
 import android.support.v7.preference.PreferenceScreen
 import android.text.InputType
+import android.util.Log
 import android.widget.Toast
 import com.github.salomonbrys.kotson.fromJson
 import com.google.gson.Gson
@@ -302,19 +303,28 @@ open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
         override fun toString() = name
     }
 
-    override fun getFilterList(): FilterList =
-        FilterList(
-            UnreadOnly(),
-            TypeSelect(),
-            CollectionSelect(listOf(CollectionFilterEntry("None")) + collections.map { CollectionFilterEntry(it.name, it.id) }),
-            LibraryGroup(libraries.map { LibraryFilter(it.id, it.name) }.sortedBy { it.name.toLowerCase() }),
-            StatusGroup(listOf("Ongoing", "Ended", "Abandoned", "Hiatus").map { StatusFilter(it) }),
-            GenreGroup(genres.map { GenreFilter(it) }),
-            TagGroup(tags.map { TagFilter(it) }),
-            PublisherGroup(publishers.map { PublisherFilter(it) }),
-            *authors.map { (role, authors) -> AuthorGroup(role, authors.map { AuthorFilter(it) }) }.toTypedArray(),
-            SeriesSort()
-        )
+    override fun getFilterList(): FilterList {
+        val filters = try {
+            mutableListOf<Filter<*>>(
+                UnreadOnly(),
+                TypeSelect(),
+                CollectionSelect(listOf(CollectionFilterEntry("None")) + collections.map { CollectionFilterEntry(it.name, it.id) }),
+                LibraryGroup(libraries.map { LibraryFilter(it.id, it.name) }.sortedBy { it.name.toLowerCase() }),
+                StatusGroup(listOf("Ongoing", "Ended", "Abandoned", "Hiatus").map { StatusFilter(it) }),
+                GenreGroup(genres.map { GenreFilter(it) }),
+                TagGroup(tags.map { TagFilter(it) }),
+                PublisherGroup(publishers.map { PublisherFilter(it) })
+            ).also {
+                it.addAll(authors.map { (role, authors) -> AuthorGroup(role, authors.map { AuthorFilter(it) }) })
+                it.add(SeriesSort())
+            }
+        } catch (e: Exception) {
+            Log.e(LOG_TAG, "error while creating filter list", e)
+            emptyList()
+        }
+
+        return FilterList(filters)
+    }
 
     private var libraries = emptyList<LibraryDto>()
     private var collections = emptyList<CollectionDto>()
@@ -431,7 +441,9 @@ open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
                         emptyList()
                     }
                 },
-                {}
+                { tr ->
+                    Log.e(LOG_TAG, "error while loading libraries for filters", tr)
+                }
             )
 
         Single.fromCallable {
@@ -447,7 +459,9 @@ open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
                         emptyList()
                     }
                 },
-                {}
+                { tr ->
+                    Log.e(LOG_TAG, "error while loading collections for filters", tr)
+                }
             )
 
         Single.fromCallable {
@@ -463,7 +477,9 @@ open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
                         emptySet()
                     }
                 },
-                {}
+                { tr ->
+                    Log.e(LOG_TAG, "error while loading genres for filters", tr)
+                }
             )
 
         Single.fromCallable {
@@ -479,7 +495,9 @@ open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
                         emptySet()
                     }
                 },
-                {}
+                { tr ->
+                    Log.e(LOG_TAG, "error while loading tags for filters", tr)
+                }
             )
 
         Single.fromCallable {
@@ -495,7 +513,9 @@ open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
                         emptySet()
                     }
                 },
-                {}
+                { tr ->
+                    Log.e(LOG_TAG, "error while loading publishers for filters", tr)
+                }
             )
 
         Single.fromCallable {
@@ -512,7 +532,9 @@ open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
                         emptyMap()
                     }
                 },
-                {}
+                { tr ->
+                    Log.e(LOG_TAG, "error while loading authors for filters", tr)
+                }
             )
     }
 
@@ -528,5 +550,7 @@ open class Komga(suffix: String = "") : ConfigurableSource, HttpSource() {
 
         private const val TYPE_SERIES = "Series"
         private const val TYPE_READLISTS = "Read lists"
+
+        private const val LOG_TAG = "extension.all.komga"
     }
 }