Handle kotatsu scheme links
This commit is contained in:
@@ -83,6 +83,16 @@
|
|||||||
<data android:host="kotatsu.app" />
|
<data android:host="kotatsu.app" />
|
||||||
<data android:path="/manga" />
|
<data android:path="/manga" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
|
|
||||||
|
<data android:scheme="kotatsu" />
|
||||||
|
<data android:host="manga" />
|
||||||
|
<data android:host="kotatsu.app" />
|
||||||
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name="org.koitharu.kotatsu.reader.ui.ReaderActivity"
|
android:name="org.koitharu.kotatsu.reader.ui.ReaderActivity"
|
||||||
|
|||||||
@@ -23,14 +23,14 @@ class MangaLinkResolver @Inject constructor(
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
suspend fun resolve(uri: Uri): Manga {
|
suspend fun resolve(uri: Uri): Manga {
|
||||||
return if (uri.host == "kotatsu.app") {
|
return if (uri.scheme == "kotatsu" || uri.host == "kotatsu.app") {
|
||||||
resolveAppLink(uri)
|
resolveAppLink(uri)
|
||||||
} else {
|
} else {
|
||||||
resolveExternalLink(uri)
|
resolveExternalLink(uri)
|
||||||
} ?: throw NotFoundException("Manga not found", uri.toString())
|
} ?: throw NotFoundException("Cannot resolve link", uri.toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
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" }
|
||||||
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)
|
||||||
@@ -42,7 +42,7 @@ class MangaLinkResolver @Inject constructor(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun resolveExternalLink(uri: Uri): Manga? {
|
private suspend fun resolveExternalLink(uri: Uri): Manga? {
|
||||||
dataRepository.findMangaByPublicUrl(uri.toString())?.let {
|
dataRepository.findMangaByPublicUrl(uri.toString())?.let {
|
||||||
return it
|
return it
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user