diff --git a/src/en/kouhaiwork/AndroidManifest.xml b/src/en/kouhaiwork/AndroidManifest.xml index 30deb7f79..91abd1c18 100644 --- a/src/en/kouhaiwork/AndroidManifest.xml +++ b/src/en/kouhaiwork/AndroidManifest.xml @@ -1,2 +1,19 @@ - + + + + + + + + + + + + diff --git a/src/en/kouhaiwork/build.gradle b/src/en/kouhaiwork/build.gradle index ec46c1e0c..195ab5698 100644 --- a/src/en/kouhaiwork/build.gradle +++ b/src/en/kouhaiwork/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'Kouhai Work' pkgNameSuffix = 'en.kouhaiwork' extClass = '.KouhaiWork' - extVersionCode = 4 + extVersionCode = 5 } apply from: "$rootDir/common.gradle" diff --git a/src/en/kouhaiwork/src/eu/kanade/tachiyomi/extension/en/kouhaiwork/KouhaiAPI.kt b/src/en/kouhaiwork/src/eu/kanade/tachiyomi/extension/en/kouhaiwork/KouhaiAPI.kt index 428ae6b81..aa6cab39c 100644 --- a/src/en/kouhaiwork/src/eu/kanade/tachiyomi/extension/en/kouhaiwork/KouhaiAPI.kt +++ b/src/en/kouhaiwork/src/eu/kanade/tachiyomi/extension/en/kouhaiwork/KouhaiAPI.kt @@ -5,6 +5,8 @@ import java.text.DecimalFormat import java.text.SimpleDateFormat import java.util.Locale +const val ID_QUERY = "id:" + const val API_URL = "https://api.kouhai.work/v3" const val STORAGE_URL = "https://api.kouhai.work/storage/" diff --git a/src/en/kouhaiwork/src/eu/kanade/tachiyomi/extension/en/kouhaiwork/KouhaiActivity.kt b/src/en/kouhaiwork/src/eu/kanade/tachiyomi/extension/en/kouhaiwork/KouhaiActivity.kt new file mode 100644 index 000000000..c03f47dbb --- /dev/null +++ b/src/en/kouhaiwork/src/eu/kanade/tachiyomi/extension/en/kouhaiwork/KouhaiActivity.kt @@ -0,0 +1,35 @@ +package eu.kanade.tachiyomi.extension.en.kouhaiwork + +import android.app.Activity +import android.content.ActivityNotFoundException +import android.content.Intent +import android.os.Bundle +import android.util.Log +import kotlin.system.exitProcess + +/** + * Springboard that accepts `{baseUrl}/series/{id}` + * intents and redirects them to the main Tachiyomi process. + */ +class KouhaiActivity : Activity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val segments = intent?.data?.pathSegments + if (segments != null && segments.size > 1) { + val activity = Intent().apply { + action = "eu.kanade.tachiyomi.SEARCH" + putExtra("query", ID_QUERY + segments[1]) + putExtra("filter", packageName) + } + try { + startActivity(activity) + } catch (ex: ActivityNotFoundException) { + Log.e("KouhaiActivity", ex.message, ex) + } + } else { + Log.e("KouhaiActivity", "Failed to parse URI from intent: $intent") + } + finish() + exitProcess(0) + } +} diff --git a/src/en/kouhaiwork/src/eu/kanade/tachiyomi/extension/en/kouhaiwork/KouhaiWork.kt b/src/en/kouhaiwork/src/eu/kanade/tachiyomi/extension/en/kouhaiwork/KouhaiWork.kt index a6ddc9a4c..26167d888 100644 --- a/src/en/kouhaiwork/src/eu/kanade/tachiyomi/extension/en/kouhaiwork/KouhaiWork.kt +++ b/src/en/kouhaiwork/src/eu/kanade/tachiyomi/extension/en/kouhaiwork/KouhaiWork.kt @@ -64,6 +64,23 @@ class KouhaiWork : HttpSource() { } }.let { MangasPage(it, false) } + override fun fetchSearchManga(page: Int, query: String, filters: FilterList) = + if (!query.startsWith(ID_QUERY)) { + super.fetchSearchManga(page, query, filters) + } else { + val id = query.substringAfter(ID_QUERY) + val req = GET("$API_URL/manga/get/$id", headers) + client.newCall(req).asObservableSuccess().map { + val series = it.decode() + val manga = SManga.create().apply { + url = series.url + title = series.title + thumbnail_url = series.thumbnail + } + MangasPage(listOf(manga), false) + }!! + } + // Request the actual manga URL for the webview override fun mangaDetailsRequest(manga: SManga) = GET("$baseUrl/series/${manga.url}", headers)