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)