From 63e9f627e07a6524d0ad3b479c7fe7fa2c018019 Mon Sep 17 00:00:00 2001
From: FourTOne5 <59261191+FourTOne5@users.noreply.github.com>
Date: Mon, 27 Dec 2021 17:05:38 +0600
Subject: [PATCH] Flame Scans: Update Permanent Url logic and enable by default
 (#10232)

* Flame Scans: Update Permanent Url logic and enable by default

* Quick Fix
---
 .../flamescans/src/FlameScans.kt              | 54 +++++++++----------
 .../wpmangareader/WPMangaReaderGenerator.kt   |  2 +-
 2 files changed, 26 insertions(+), 30 deletions(-)

diff --git a/multisrc/overrides/wpmangareader/flamescans/src/FlameScans.kt b/multisrc/overrides/wpmangareader/flamescans/src/FlameScans.kt
index e36682d8d..61ecf1ef1 100644
--- a/multisrc/overrides/wpmangareader/flamescans/src/FlameScans.kt
+++ b/multisrc/overrides/wpmangareader/flamescans/src/FlameScans.kt
@@ -137,6 +137,7 @@ open class FlameScans(
     }
     // Split Image Fixer End
 
+    // Permanent Url start
     override fun fetchPopularManga(page: Int): Observable<MangasPage> {
         return super.fetchPopularManga(page).tempUrlToPermIfNeeded()
     }
@@ -159,41 +160,36 @@ open class FlameScans(
     }
 
     private fun SManga.tempUrlToPermIfNeeded(): SManga {
-        val sManga = this
+        val turnTempUrlToPerm = preferences.getBoolean(getPermanentMangaUrlPreferenceKey(), true)
+        if (!turnTempUrlToPerm) return this
 
-        val turnTempUrlToPerm = preferences.getBoolean(getPermanentMangaUrlPreferenceKey(), false)
-        if (!turnTempUrlToPerm) return sManga
-
-        val sMangaUrl = sManga.url
-        val sMangaTitleFirstWord = sManga.title.split(" ")[0]
-        return if (sMangaUrl.startsWith("$mangaUrlDirectory/$sMangaTitleFirstWord")) {
-            sManga
-        } else {
-            sManga.url = sMangaUrl.replaceFirst(TEMP_TO_PERM_URL_REGEX, "$1")
-            sManga
+        val sMangaTitleFirstWord = this.title.split(" ")[0]
+        if (!this.url.contains("/$sMangaTitleFirstWord", ignoreCase = true)) {
+            this.url = this.url.replaceFirst(TEMP_TO_PERM_URL_REGEX, "$1")
         }
+        return this
     }
 
     override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
-        return super.fetchChapterList(manga).map { sChapterList ->
-            sChapterList.map { it.tempUrlToPermIfNeeded() }
+        val sManga = manga.tempUrlToPermIfNeeded()
+        return super.fetchChapterList(sManga).map { sChapterList ->
+            sChapterList.map { it.tempUrlToPermIfNeeded(sManga) }
         }
     }
 
-    private fun SChapter.tempUrlToPermIfNeeded(): SChapter {
-        val sChapter = this
+    private fun SChapter.tempUrlToPermIfNeeded(manga: SManga): SChapter {
+        val turnTempUrlToPerm = preferences.getBoolean(getPermanentChapterUrlPreferenceKey(), true)
+        if (!turnTempUrlToPerm) return this
 
-        val turnTempUrlToPerm = preferences.getBoolean(getPermanentChapterUrlPreferenceKey(), false)
-        if (!turnTempUrlToPerm) return sChapter
-
-        val sChapterUrl = sChapter.url
-        val sChapterNameFirstWord = sChapter.name.split(" ")[0]
-        return if (sChapterUrl.startsWith("/$sChapterNameFirstWord")) {
-            sChapter
-        } else {
-            sChapter.url = sChapterUrl.replaceFirst(TEMP_TO_PERM_URL_REGEX, "$1")
-            sChapter
+        val sChapterNameFirstWord = this.name.split(" ")[0]
+        val sMangaTitleFirstWord = manga.title.split(" ")[0]
+        if (
+            !this.url.contains("/$sChapterNameFirstWord", ignoreCase = true) &&
+            !this.url.contains("/$sMangaTitleFirstWord", ignoreCase = true)
+        ) {
+            this.url = this.url.replaceFirst(TEMP_TO_PERM_URL_REGEX, "$1")
         }
+        return this
     }
 
     override fun setupPreferenceScreen(screen: PreferenceScreen) {
@@ -201,7 +197,7 @@ open class FlameScans(
             key = getPermanentMangaUrlPreferenceKey()
             title = PREF_PERM_MANGA_URL_TITLE
             summary = PREF_PERM_MANGA_URL_SUMMARY
-            setDefaultValue(false)
+            setDefaultValue(true)
 
             setOnPreferenceChangeListener { _, newValue ->
                 val checkValue = newValue as Boolean
@@ -214,7 +210,7 @@ open class FlameScans(
             key = getPermanentChapterUrlPreferenceKey()
             title = PREF_PERM_CHAPTER_URL_TITLE
             summary = PREF_PERM_CHAPTER_URL_SUMMARY
-            setDefaultValue(false)
+            setDefaultValue(true)
 
             setOnPreferenceChangeListener { _, newValue ->
                 val checkValue = newValue as Boolean
@@ -240,11 +236,11 @@ open class FlameScans(
         private const val COMPOSED_SUFFIX = "?comp"
 
         private const val PREF_PERM_MANGA_URL_KEY_PREFIX = "pref_permanent_manga_url_"
-        private const val PREF_PERM_MANGA_URL_TITLE = "Permanent Manga Url"
+        private const val PREF_PERM_MANGA_URL_TITLE = "Permanent Manga URL"
         private const val PREF_PERM_MANGA_URL_SUMMARY = "Turns all manga urls into permanent ones."
 
         private const val PREF_PERM_CHAPTER_URL_KEY_PREFIX = "pref_permanent_chapter_url"
-        private const val PREF_PERM_CHAPTER_URL_TITLE = "Permanent Chapter URl"
+        private const val PREF_PERM_CHAPTER_URL_TITLE = "Permanent Chapter URL"
         private const val PREF_PERM_CHAPTER_URL_SUMMARY = "Turns all chapter urls into permanent one."
 
         private val TEMP_TO_PERM_URL_REGEX = Regex("""(/)\d+-""")
diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderGenerator.kt
index 11072571f..59cb90a98 100644
--- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderGenerator.kt
+++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/wpmangareader/WPMangaReaderGenerator.kt
@@ -13,7 +13,7 @@ class WPMangaReaderGenerator : ThemeSourceGenerator {
     override val baseVersionCode: Int = 11
 
     override val sources = listOf(
-        MultiLang("Flame Scans", "https://flamescans.org", listOf("ar", "en"), className = "FlameScansFactory", pkgName = "flamescans"),
+        MultiLang("Flame Scans", "https://flamescans.org", listOf("ar", "en"), className = "FlameScansFactory", pkgName = "flamescans", overrideVersionCode = 1),
         SingleLang("Anitation Arts", "https://anitationarts.org", "en", overrideVersionCode = 1),
         SingleLang("Alpha Scans", "https://alpha-scans.org", "en", overrideVersionCode = 1),
         SingleLang("BeastScans", "https://beastscans.com", "en"),