diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7dcb9ee99..02f12e32a 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -312,7 +312,7 @@ android:scheme="https" /> - , - // UrlImportableSource, + UrlImportableSource, FollowsSource, LoginSource, BrowseSourceFilterHeader, @@ -66,7 +70,7 @@ class MangaDex(delegate: HttpSource, val context: Context) : MdLang.fromExt(lang) ?: MdLang.ENGLISH } - // override val matchingHosts: List = listOf("mangadex.org", "www.mangadex.org") + override val matchingHosts: List = listOf("mangadex.org", "www.mangadex.org") val preferences = Injekt.get() val mdList: MdList = Injekt.get().mdList @@ -114,18 +118,11 @@ class MangaDex(delegate: HttpSource, val context: Context) : PageHandler(headers, mangadexService, mangaPlusHandler, preferences, mdList) } - /*override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable = - urlImportFetchSearchManga(context, query) { - importIdToMdId(query) { - super.fetchSearchManga(page, query, filters) - } - }*/ - - /*override suspend fun mapUrlToMangaUrl(uri: Uri): String? { - val lcFirstPathSegment = uri.pathSegments.firstOrNull()?.toLowerCase() ?: return null + override suspend fun mapUrlToMangaUrl(uri: Uri): String? { + val lcFirstPathSegment = uri.pathSegments.firstOrNull()?.lowercase() ?: return null return if (lcFirstPathSegment == "title" || lcFirstPathSegment == "manga") { - "/manga/" + uri.pathSegments[1] + MdUtil.buildMangaUrl(uri.pathSegments[1]) } else { null } @@ -133,15 +130,14 @@ class MangaDex(delegate: HttpSource, val context: Context) : override fun mapUrlToChapterUrl(uri: Uri): String? { if (!uri.pathSegments.firstOrNull().equals("chapter", true)) return null - val id = uri.pathSegments.getOrNull(1)?.toIntOrNull() ?: return null - return MdUtil.oldApiChapter + id + val id = uri.pathSegments.getOrNull(1) ?: return null + return MdApi.chapter + '/' + id } override suspend fun mapChapterUrlToMangaUrl(uri: Uri): String? { - val id = uri.pathSegments.getOrNull(2) ?: return null - val mangaId = MangaHandler(baseHttpClient, headers, mdLang).getMangaIdFromChapterId(id) - return MdUtil.mapMdIdToMangaUrl(mangaId) - }*/ + val id = uri.pathSegments.getOrNull(1) ?: return null + return mangaHandler.getMangaFromChapterId(id)?.let { MdUtil.buildMangaUrl(it) } + } override fun fetchMangaDetails(manga: SManga): Observable { return mangaHandler.fetchMangaDetailsObservable(manga, id, preferences.mangaDexForceLatestCovers().get()) @@ -240,9 +236,6 @@ class MangaDex(delegate: HttpSource, val context: Context) : }*/ override suspend fun fetchTrackingInfo(url: String): Track { - if (!isLogged()) { - throw Exception("Not Logged in") - } return followsHandler.fetchTrackingInfo(url) } @@ -266,26 +259,6 @@ class MangaDex(delegate: HttpSource, val context: Context) : return similarHandler.getSimilar(manga) } - /*private fun importIdToMdId(query: String, fail: () -> Observable): Observable = - when { - query.toIntOrNull() != null -> { - runAsObservable({ - GalleryAdder().addGallery(context, MdUtil.baseUrl + MdUtil.mapMdIdToMangaUrl(query.toInt()), false, this@MangaDex) - }) - .map { res -> - MangasPage( - if (res is GalleryAddEvent.Success) { - listOf(res.manga) - } else { - emptyList() - }, - false - ) - } - } - else -> fail() - }*/ - companion object { private const val dataSaverPref = "dataSaverV5" diff --git a/app/src/main/java/exh/md/handlers/ApiMangaParser.kt b/app/src/main/java/exh/md/handlers/ApiMangaParser.kt index d149b0b84..1461e0884 100644 --- a/app/src/main/java/exh/md/handlers/ApiMangaParser.kt +++ b/app/src/main/java/exh/md/handlers/ApiMangaParser.kt @@ -1,7 +1,6 @@ package exh.md.handlers import eu.kanade.tachiyomi.data.database.DatabaseHelper -import eu.kanade.tachiyomi.network.parseAs import eu.kanade.tachiyomi.source.model.SManga import exh.log.xLogE import exh.md.dto.ChapterDto @@ -15,7 +14,6 @@ import exh.metadata.metadata.base.insertFlatMetadata import exh.util.capitalize import exh.util.floor import exh.util.nullIfEmpty -import okhttp3.Response import tachiyomi.source.model.ChapterInfo import tachiyomi.source.model.MangaInfo import uy.kohesive.injekt.injectLazy @@ -200,9 +198,8 @@ class ApiMangaParser( }.toList() } - fun chapterParseForMangaId(response: Response): String { - return response.parseAs(MdUtil.jsonParser) - .relationships.firstOrNull { it.type.equals("manga", true) }?.id ?: throw Exception("Not found") + fun chapterParseForMangaId(chapterDto: ChapterDto): String? { + return chapterDto.relationships.find { it.type.equals("manga", true) }?.id } fun StringBuilder.appends(string: String): StringBuilder = append("$string ") diff --git a/app/src/main/java/exh/md/handlers/MangaHandler.kt b/app/src/main/java/exh/md/handlers/MangaHandler.kt index 893f77e54..d677c0253 100644 --- a/app/src/main/java/exh/md/handlers/MangaHandler.kt +++ b/app/src/main/java/exh/md/handlers/MangaHandler.kt @@ -82,4 +82,10 @@ class MangaHandler( remoteTrack.await() to null } } + + suspend fun getMangaFromChapterId(chapterId: String): String? { + return withIOContext { + apiMangaParser.chapterParseForMangaId(service.viewChapter(chapterId)) + } + } }