From ac0dc0a94a8140c90d2e3db0e044c23850368524 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 31 May 2025 07:51:12 +0300 Subject: [PATCH] Added data to details intent --- .../kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt | 10 +++++++++- .../koitharu/kotatsu/core/parser/MangaLinkResolver.kt | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt index 2d88ee025..a0a03e116 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt @@ -677,9 +677,11 @@ class AppRouter private constructor( fun detailsIntent(context: Context, manga: Manga) = Intent(context, DetailsActivity::class.java) .putExtra(KEY_MANGA, ParcelableManga(manga)) + .setData(shortMangaUrl(manga.id)) fun detailsIntent(context: Context, mangaId: Long) = Intent(context, DetailsActivity::class.java) .putExtra(KEY_ID, mangaId) + .setData(shortMangaUrl(mangaId)) fun listIntent(context: Context, source: MangaSource, filter: MangaListFilter?, sortOrder: SortOrder?): Intent = Intent(context, MangaListActivity::class.java) @@ -697,7 +699,7 @@ class AppRouter private constructor( fun cloudFlareResolveIntent(context: Context, exception: CloudFlareProtectedException): Intent = Intent(context, CloudFlareActivity::class.java).apply { data = exception.url.toUri() - putExtra(KEY_SOURCE, exception.source?.name) + putExtra(KEY_SOURCE, exception.source.name) exception.headers[CommonHeaders.USER_AGENT]?.let { putExtra(KEY_USER_AGENT, it) } @@ -772,6 +774,12 @@ class AppRouter private constructor( else -> true } + private fun shortMangaUrl(mangaId: Long) = Uri.Builder() + .scheme("kotatsu") + .path("manga") + .appendQueryParameter("id", mangaId.toString()) + .build() + const val KEY_DATA = "data" const val KEY_ENTRIES = "entries" const val KEY_ERROR = "error" diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/parser/MangaLinkResolver.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/parser/MangaLinkResolver.kt index 72fe0ba59..8a18d7b95 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/parser/MangaLinkResolver.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/parser/MangaLinkResolver.kt @@ -35,6 +35,10 @@ class MangaLinkResolver @Inject constructor( private suspend fun resolveAppLink(uri: Uri): Manga? { require(uri.pathSegments.singleOrNull() == "manga") { "Invalid url" } + uri.getQueryParameter("id")?.let { mangaId -> + // short url + return dataRepository.findMangaById(mangaId.toLong(), withChapters = false) + } val sourceName = requireNotNull(uri.getQueryParameter("source")) { "Source is not specified" } val source = MangaSource(sourceName) require(source != UnknownMangaSource) { "Manga source $sourceName is not supported" }