From 3b91d66b9b173bb97fa8847431c2737f1b7673f6 Mon Sep 17 00:00:00 2001
From: Alexander Chernov <alexander@chernov.it>
Date: Wed, 12 Jul 2023 00:21:55 +0100
Subject: [PATCH] =?UTF-8?q?fix:=20uri=20must=20not=20be=20null=20on=20mmsc?=
 =?UTF-8?q?ans,=20switched=20to=20ajax=20loading,=20fix=204=E2=80=A6=20(#1?=
 =?UTF-8?q?7076)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* fix: uri must not be null on mmscans, switched to ajax loading, fix 404 on the last page

* Update multisrc/overrides/madara/mmscans/src/MMScans.kt

Co-authored-by: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com>

* mmscans: renamed some func

---------

Co-authored-by: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com>
---
 .../overrides/madara/mmscans/src/MMScans.kt   | 45 ++++++++++++++++++-
 .../multisrc/madara/MadaraGenerator.kt        |  2 +-
 2 files changed, 45 insertions(+), 2 deletions(-)

diff --git a/multisrc/overrides/madara/mmscans/src/MMScans.kt b/multisrc/overrides/madara/mmscans/src/MMScans.kt
index db859e4ba..f67b227f9 100644
--- a/multisrc/overrides/madara/mmscans/src/MMScans.kt
+++ b/multisrc/overrides/madara/mmscans/src/MMScans.kt
@@ -1,8 +1,11 @@
 package eu.kanade.tachiyomi.extension.en.mmscans
 
 import eu.kanade.tachiyomi.multisrc.madara.Madara
+import eu.kanade.tachiyomi.network.POST
 import eu.kanade.tachiyomi.source.model.SChapter
 import eu.kanade.tachiyomi.source.model.SManga
+import okhttp3.FormBody
+import okhttp3.Request
 import org.jsoup.nodes.Element
 
 class MMScans : Madara("MMScans", "https://mm-scans.org", "en") {
@@ -12,8 +15,48 @@ class MMScans : Madara("MMScans", "https://mm-scans.org", "en") {
 
     override val popularMangaUrlSelector = "div.item-summary a"
     override fun chapterListSelector() = "li.chapter-li"
-    override fun searchMangaSelector() = "a"
+    override fun searchMangaSelector() = ".search-wrap >.tab-content-wrap > a"
+    override fun searchMangaNextPageSelector(): String? = "body:not(:has(.no-posts))"
 
+    fun oldLoadMoreRequest(page: Int, metaKey: String): Request {
+        val form = FormBody.Builder()
+            .add("action", "madara_load_more")
+            .add("page", page.toString())
+            .add("template", "madara-core/content/content-archive")
+            .add("vars[paged]", "1")
+            .add("vars[orderby]", "meta_value_num")
+            .add("vars[template]", "archive")
+            .add("vars[sidebar]", "right")
+            .add("vars[post_type]", "wp-manga")
+            .add("vars[post_status]", "publish")
+            .add("vars[meta_key]", metaKey)
+            .add("vars[meta_query][0][paged]", "1")
+            .add("vars[meta_query][0][orderby]", "meta_value_num")
+            .add("vars[meta_query][0][template]", "archive")
+            .add("vars[meta_query][0][sidebar]", "right")
+            .add("vars[meta_query][0][post_type]", "wp-manga")
+            .add("vars[meta_query][0][post_status]", "publish")
+            .add("vars[meta_query][0][meta_key]", metaKey)
+            .add("vars[meta_query][relation]", "AND")
+            .add("vars[manga_archives_item_layout]", "default")
+            .build()
+
+        val xhrHeaders = headersBuilder()
+            .add("Content-Length", form.contentLength().toString())
+            .add("Content-Type", form.contentType().toString())
+            .add("Referer", "$baseUrl/")
+            .add("X-Requested-With", "XMLHttpRequest")
+            .build()
+
+        return POST("$baseUrl/wp-admin/admin-ajax.php", xhrHeaders, form)
+    }
+
+    override fun popularMangaRequest(page: Int): Request {
+        return oldLoadMoreRequest(page - 1, "_wp_manga_views")
+    }
+    override fun latestUpdatesRequest(page: Int): Request {
+        return oldLoadMoreRequest(page - 1, "_latest_update")
+    }
     override fun popularMangaFromElement(element: Element): SManga {
         val manga = SManga.create()
 
diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt
index 7e1386364..a20595c0c 100644
--- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt
+++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt
@@ -310,7 +310,7 @@ class MadaraGenerator : ThemeSourceGenerator {
         SingleLang("MiniTwo Scan", "https://minitwoscan.com", "pt-BR"),
         SingleLang("Mirad Scanlator", "https://miradscanlator.site", "pt-BR", overrideVersionCode = 1),
         SingleLang("Mixed Manga", "https://mixedmanga.com", "en", overrideVersionCode = 1),
-        SingleLang("MMScans", "https://mm-scans.org", "en", overrideVersionCode = 5),
+        SingleLang("MMScans", "https://mm-scans.org", "en", overrideVersionCode = 6),
         SingleLang("Momo no Hana Scan", "https://momonohanascan.com", "pt-BR", className = "MomoNoHanaScan", overrideVersionCode = 1),
         SingleLang("MonarcaManga", "https://monarcamanga.com", "es"),
         SingleLang("MoonLovers Scan", "https://moonloversscan.com.br", "pt-BR", isNsfw = true),