Added data to details intent

This commit is contained in:
Koitharu
2025-05-31 07:51:12 +03:00
parent 7de4ac2b89
commit ac0dc0a94a
2 changed files with 13 additions and 1 deletions

View File

@@ -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"

View File

@@ -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" }