From 714c77371480fef21f3fa2f15d64fcb5df8e2511 Mon Sep 17 00:00:00 2001
From: Arraiment <76941874+Arraiment@users.noreply.github.com>
Date: Fri, 6 Aug 2021 18:09:08 +0800
Subject: [PATCH] Fix issue parsing chapter list (#8417)

---
 src/en/mangaowl/build.gradle                  |  2 +-
 .../extension/en/mangaowl/MangaOwl.kt         | 19 +++++++++----------
 2 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/src/en/mangaowl/build.gradle b/src/en/mangaowl/build.gradle
index 31b3abd0b..ccc25e1cf 100644
--- a/src/en/mangaowl/build.gradle
+++ b/src/en/mangaowl/build.gradle
@@ -5,7 +5,7 @@ ext {
     extName = 'MangaOwl'
     pkgNameSuffix = 'en.mangaowl'
     extClass = '.MangaOwl'
-    extVersionCode = 18
+    extVersionCode = 19
     libVersion = '1.2'
 }
 
diff --git a/src/en/mangaowl/src/eu/kanade/tachiyomi/extension/en/mangaowl/MangaOwl.kt b/src/en/mangaowl/src/eu/kanade/tachiyomi/extension/en/mangaowl/MangaOwl.kt
index 1c5e95dcc..a112c553a 100644
--- a/src/en/mangaowl/src/eu/kanade/tachiyomi/extension/en/mangaowl/MangaOwl.kt
+++ b/src/en/mangaowl/src/eu/kanade/tachiyomi/extension/en/mangaowl/MangaOwl.kt
@@ -8,7 +8,6 @@ import eu.kanade.tachiyomi.source.model.SChapter
 import eu.kanade.tachiyomi.source.model.SManga
 import eu.kanade.tachiyomi.source.online.ParsedHttpSource
 import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
-import okhttp3.Headers
 import okhttp3.OkHttpClient
 import okhttp3.Request
 import org.jsoup.nodes.Document
@@ -79,10 +78,10 @@ class MangaOwl : ParsedHttpSource() {
                 is SortFilter -> url.addQueryParameter("sort", filter.toUriPart())
                 is StatusFilter -> url.addQueryParameter("completed", filter.toUriPart())
                 is GenreFilter -> {
-                        val genres = filter.state
-                            .filter { it.state }
-                            .joinToString(".") { it.uriPart }
-                        url.addQueryParameter("genres", genres)
+                    val genres = filter.state
+                        .filter { it.state }
+                        .joinToString(".") { it.uriPart }
+                    url.addQueryParameter("genres", genres)
                 }
             }
         }
@@ -122,14 +121,15 @@ class MangaOwl : ParsedHttpSource() {
 
     // Chapters
 
-    override fun chapterListSelector() = "div.table-chapter-list ul li"
+    // Only selects chapter elements with links, since sometimes chapter lists have unlinked chapters
+    override fun chapterListSelector() = "div.table-chapter-list ul li:has(a)"
 
     override fun chapterFromElement(element: Element): SChapter {
         val chapter = SChapter.create()
         element.select("a").let {
             // They replace some URLs with a different host getting a path of domain.com/reader/reader/, fix to make usable on baseUrl
             chapter.setUrlWithoutDomain(it.attr("href").replace("/reader/reader/", "/reader/"))
-            chapter.name = it.select("label")[0].text()
+            chapter.name = it.select("label").first().text()
         }
         chapter.date_upload = parseChapterDate(element.select("small:last-of-type").text())
 
@@ -160,7 +160,6 @@ class MangaOwl : ParsedHttpSource() {
 
     override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not used")
 
-
     // Filters
 
     override fun getFilterList() = FilterList(
@@ -169,12 +168,12 @@ class MangaOwl : ParsedHttpSource() {
         StatusFilter(),
         GenreFilter(getGenreList())
     )
-    
+
     private open class UriPartFilter(displayName: String, val vals: Array<Pair<String, String>>) :
         Filter.Select<String>(displayName, vals.map { it.first }.toTypedArray()) {
         fun toUriPart() = vals[state].second
     }
-    
+
     private class SearchFilter : UriPartFilter(
         "Search in",
         arrayOf(