From 04dc4ef66a30006e25dba4f20e80e7193963d6c3 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Wed, 15 Mar 2023 19:01:44 -0400 Subject: [PATCH] The crash is fixed somehow --- .../java/eu/kanade/tachiyomi/source/online/all/EHentai.kt | 2 ++ .../java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt | 2 ++ .../java/eu/kanade/tachiyomi/source/online/all/NHentai.kt | 1 + .../eu/kanade/tachiyomi/source/online/english/EightMuses.kt | 1 + .../eu/kanade/tachiyomi/source/online/english/HBrowse.kt | 1 + .../eu/kanade/tachiyomi/source/online/english/Pururin.kt | 1 + .../eu/kanade/tachiyomi/source/online/english/Tsumino.kt | 1 + app/src/main/java/exh/md/handlers/ApiMangaParser.kt | 5 +---- source-api/consumer-proguard.pro | 2 ++ .../eu/kanade/tachiyomi/source/online/MetadataSource.kt | 5 +---- 10 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt index d2279482e..6490cfa5b 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt @@ -642,6 +642,8 @@ class EHentai( */ override fun mangaDetailsParse(response: Response) = throw UnsupportedOperationException() + override fun newMetaInstance() = EHentaiSearchMetadata() + override suspend fun parseIntoMetadata(metadata: EHentaiSearchMetadata, input: Document) { with(metadata) { with(input) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt index 73040c3fd..6e144ebb2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt @@ -213,6 +213,8 @@ class MangaDex(delegate: HttpSource, val context: Context) : // MetadataSource methods override val metaClass: KClass = MangaDexSearchMetadata::class + override fun newMetaInstance() = MangaDexSearchMetadata() + override suspend fun parseIntoMetadata(metadata: MangaDexSearchMetadata, input: Triple, StatisticsMangaDto>) { apiMangaParser.parseIntoMetadata(metadata, input.first, input.second, input.third) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/NHentai.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/NHentai.kt index a3c58b4b7..24659d7a7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/NHentai.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/NHentai.kt @@ -36,6 +36,7 @@ class NHentai(delegate: HttpSource, val context: Context) : NamespaceSource, PagePreviewSource { override val metaClass = NHentaiSearchMetadata::class + override fun newMetaInstance() = NHentaiSearchMetadata() override val lang = delegate.lang private val sourcePreferences: SharedPreferences by lazy { diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/EightMuses.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/EightMuses.kt index 626109c0a..5c00c4443 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/EightMuses.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/EightMuses.kt @@ -24,6 +24,7 @@ class EightMuses(delegate: HttpSource, val context: Context) : UrlImportableSource, NamespaceSource { override val metaClass = EightMusesSearchMetadata::class + override fun newMetaInstance() = EightMusesSearchMetadata() override val lang = "en" // Support direct URL importing diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/HBrowse.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/HBrowse.kt index 3800691c3..2de327ecc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/HBrowse.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/HBrowse.kt @@ -23,6 +23,7 @@ class HBrowse(delegate: HttpSource, val context: Context) : UrlImportableSource, NamespaceSource { override val metaClass = HBrowseSearchMetadata::class + override fun newMetaInstance() = HBrowseSearchMetadata() override val lang = "en" // Support direct URL importing diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/Pururin.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/Pururin.kt index 6b1411a0d..1e5149f58 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/Pururin.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/Pururin.kt @@ -36,6 +36,7 @@ class Pururin(delegate: HttpSource, val context: Context) : * The class of the metadata used by this source */ override val metaClass = PururinSearchMetadata::class + override fun newMetaInstance() = PururinSearchMetadata() // Support direct URL importing override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/Tsumino.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/Tsumino.kt index 45b1bcf5f..160416988 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/Tsumino.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/Tsumino.kt @@ -30,6 +30,7 @@ class Tsumino(delegate: HttpSource, val context: Context) : UrlImportableSource, NamespaceSource { override val metaClass = TsuminoSearchMetadata::class + override fun newMetaInstance() = TsuminoSearchMetadata() override val lang = "en" // Support direct URL importing diff --git a/app/src/main/java/exh/md/handlers/ApiMangaParser.kt b/app/src/main/java/exh/md/handlers/ApiMangaParser.kt index 7ec04bfc6..c5e5ce670 100644 --- a/app/src/main/java/exh/md/handlers/ApiMangaParser.kt +++ b/app/src/main/java/exh/md/handlers/ApiMangaParser.kt @@ -33,10 +33,7 @@ class ApiMangaParser( /** * Use reflection to create a new instance of metadata */ - private fun newMetaInstance() = metaClass.constructors.find { - it.parameters.isEmpty() - }?.call() - ?: error("Could not find no-args constructor for meta class: ${metaClass.qualifiedName}!") + private fun newMetaInstance() = MangaDexSearchMetadata() suspend fun parseToManga( manga: SManga, diff --git a/source-api/consumer-proguard.pro b/source-api/consumer-proguard.pro index aa81da4bf..a040a24cb 100644 --- a/source-api/consumer-proguard.pro +++ b/source-api/consumer-proguard.pro @@ -3,3 +3,5 @@ -keep class eu.kanade.tachiyomi.source.** extends eu.kanade.tachiyomi.source.Source { public protected *; } -keep,allowoptimization class eu.kanade.tachiyomi.util.JsoupExtensionsKt { public protected *; } + +-keep class exh.metadata.** { public protected *; } \ No newline at end of file diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/MetadataSource.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/MetadataSource.kt index 0aa8b58d8..baa8459d7 100644 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/MetadataSource.kt +++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/MetadataSource.kt @@ -42,10 +42,7 @@ interface MetadataSource : CatalogueSource { /** * Use reflection to create a new instance of metadata */ - private fun newMetaInstance() = metaClass.constructors.find { - it.parameters.isEmpty() - }?.call() - ?: error("Could not find no-args constructor for meta class: ${metaClass.qualifiedName}!") + fun newMetaInstance(): M /** * Parses metadata from the input and then copies it into the manga