Added data to details intent

master
Koitharu 11 months ago
parent 7de4ac2b89
commit ac0dc0a94a
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -677,9 +677,11 @@ class AppRouter private constructor(
fun detailsIntent(context: Context, manga: Manga) = Intent(context, DetailsActivity::class.java) fun detailsIntent(context: Context, manga: Manga) = Intent(context, DetailsActivity::class.java)
.putExtra(KEY_MANGA, ParcelableManga(manga)) .putExtra(KEY_MANGA, ParcelableManga(manga))
.setData(shortMangaUrl(manga.id))
fun detailsIntent(context: Context, mangaId: Long) = Intent(context, DetailsActivity::class.java) fun detailsIntent(context: Context, mangaId: Long) = Intent(context, DetailsActivity::class.java)
.putExtra(KEY_ID, mangaId) .putExtra(KEY_ID, mangaId)
.setData(shortMangaUrl(mangaId))
fun listIntent(context: Context, source: MangaSource, filter: MangaListFilter?, sortOrder: SortOrder?): Intent = fun listIntent(context: Context, source: MangaSource, filter: MangaListFilter?, sortOrder: SortOrder?): Intent =
Intent(context, MangaListActivity::class.java) Intent(context, MangaListActivity::class.java)
@ -697,7 +699,7 @@ class AppRouter private constructor(
fun cloudFlareResolveIntent(context: Context, exception: CloudFlareProtectedException): Intent = fun cloudFlareResolveIntent(context: Context, exception: CloudFlareProtectedException): Intent =
Intent(context, CloudFlareActivity::class.java).apply { Intent(context, CloudFlareActivity::class.java).apply {
data = exception.url.toUri() data = exception.url.toUri()
putExtra(KEY_SOURCE, exception.source?.name) putExtra(KEY_SOURCE, exception.source.name)
exception.headers[CommonHeaders.USER_AGENT]?.let { exception.headers[CommonHeaders.USER_AGENT]?.let {
putExtra(KEY_USER_AGENT, it) putExtra(KEY_USER_AGENT, it)
} }
@ -772,6 +774,12 @@ class AppRouter private constructor(
else -> true 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_DATA = "data"
const val KEY_ENTRIES = "entries" const val KEY_ENTRIES = "entries"
const val KEY_ERROR = "error" const val KEY_ERROR = "error"

@ -35,6 +35,10 @@ class MangaLinkResolver @Inject constructor(
private suspend fun resolveAppLink(uri: Uri): Manga? { private suspend fun resolveAppLink(uri: Uri): Manga? {
require(uri.pathSegments.singleOrNull() == "manga") { "Invalid url" } 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 sourceName = requireNotNull(uri.getQueryParameter("source")) { "Source is not specified" }
val source = MangaSource(sourceName) val source = MangaSource(sourceName)
require(source != UnknownMangaSource) { "Manga source $sourceName is not supported" } require(source != UnknownMangaSource) { "Manga source $sourceName is not supported" }

Loading…
Cancel
Save