diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e9985dbd8..23dcf8430 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -340,6 +340,23 @@
android:scheme="https"
android:host="www.mangadex.cc"
android:pathPrefix="/title/" />
+
+
+
+
+
{
return MangaHandler(client, headers, listOf(mdLang), preferences.mangaDexForceLatestCovers().get()).fetchMangaDetailsObservable(manga)
}
diff --git a/app/src/main/java/exh/GalleryAdder.kt b/app/src/main/java/exh/GalleryAdder.kt
index 092ffaa9d..bed818885 100755
--- a/app/src/main/java/exh/GalleryAdder.kt
+++ b/app/src/main/java/exh/GalleryAdder.kt
@@ -79,9 +79,29 @@ class GalleryAdder {
} ?: return GalleryAddEvent.Fail.UnknownType(url, context)
}
+ val realChapterUrl = try {
+ source.mapUrlToChapterUrl(uri)
+ } catch (e: Exception) {
+ logger.e(context.getString(R.string.gallery_adder_uri_map_to_chapter_error), e)
+ null
+ }
+
+ val cleanedChapterUrl = if (realChapterUrl != null) {
+ try {
+ source.cleanChapterUrl(realChapterUrl)
+ } catch (e: Exception) {
+ logger.e(context.getString(R.string.gallery_adder_uri_clean_error), e)
+ null
+ }
+ } else null
+
+ val chapterMangaUrl = if (realChapterUrl != null) {
+ source.mapChapterUrlToMangaUrl(realChapterUrl.toUri())
+ } else null
+
// Map URL to manga URL
val realMangaUrl = try {
- source.mapUrlToMangaUrl(uri)
+ chapterMangaUrl ?: source.mapUrlToMangaUrl(uri)
} catch (e: Exception) {
logger.e(context.getString(R.string.gallery_adder_uri_map_to_manga_error), e)
null
@@ -139,7 +159,16 @@ class GalleryAdder {
return GalleryAddEvent.Fail.Error(url, context.getString(R.string.gallery_adder_chapter_fetch_error, url))
}
- return GalleryAddEvent.Success(url, manga, context)
+ return if (cleanedChapterUrl != null) {
+ val chapter = db.getChapter(cleanedChapterUrl, manga.id!!).executeOnIO()
+ if (chapter != null) {
+ GalleryAddEvent.Success(url, manga, context, chapter)
+ } else {
+ GalleryAddEvent.Fail.Error(url, context.getString(R.string.gallery_adder_could_not_identify_chapter, url))
+ }
+ } else {
+ GalleryAddEvent.Success(url, manga, context)
+ }
} catch (e: Exception) {
logger.w(context.getString(R.string.gallery_adder_could_not_add_manga, url), e)
diff --git a/app/src/main/java/exh/ui/intercept/InterceptActivity.kt b/app/src/main/java/exh/ui/intercept/InterceptActivity.kt
index f1d80f270..e68d6913a 100755
--- a/app/src/main/java/exh/ui/intercept/InterceptActivity.kt
+++ b/app/src/main/java/exh/ui/intercept/InterceptActivity.kt
@@ -9,11 +9,14 @@ import com.afollestad.materialdialogs.callbacks.onCancel
import com.afollestad.materialdialogs.callbacks.onDismiss
import com.afollestad.materialdialogs.list.listItemsSingleChoice
import eu.kanade.tachiyomi.R
+import eu.kanade.tachiyomi.data.database.models.Chapter
+import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.databinding.EhActivityInterceptBinding
import eu.kanade.tachiyomi.source.online.UrlImportableSource
import eu.kanade.tachiyomi.ui.base.activity.BaseViewBindingActivity
import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.manga.MangaController
+import eu.kanade.tachiyomi.ui.reader.ReaderActivity
import exh.GalleryAddEvent
import exh.GalleryAdder
import kotlinx.coroutines.Dispatchers
@@ -66,10 +69,14 @@ class InterceptActivity : BaseViewBindingActivity()
binding.interceptStatus.setText(R.string.launching_app)
onBackPressed()
startActivity(
- Intent(this, MainActivity::class.java)
- .setAction(MainActivity.SHORTCUT_MANGA)
- .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
- .putExtra(MangaController.MANGA_EXTRA, it.mangaId)
+ if (it.chapter != null) {
+ ReaderActivity.newIntent(this, it.manga, it.chapter)
+ } else {
+ Intent(this, MainActivity::class.java)
+ .setAction(MainActivity.SHORTCUT_MANGA)
+ .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
+ .putExtra(MangaController.MANGA_EXTRA, it.mangaId)
+ }
)
}
is InterceptResult.Failure -> {
@@ -126,7 +133,7 @@ class InterceptActivity : BaseViewBindingActivity()
status.value = when (result) {
is GalleryAddEvent.Success -> result.manga.id?.let {
- InterceptResult.Success(it)
+ InterceptResult.Success(it, result.manga, result.chapter)
} ?: InterceptResult.Failure(this@InterceptActivity.getString(R.string.manga_id_is_null))
is GalleryAddEvent.Fail -> InterceptResult.Failure(result.logMessage)
}
@@ -137,6 +144,6 @@ class InterceptActivity : BaseViewBindingActivity()
sealed class InterceptResult {
object Idle : InterceptResult()
object Loading : InterceptResult()
- data class Success(val mangaId: Long) : InterceptResult()
+ data class Success(val mangaId: Long, val manga: Manga, val chapter: Chapter? = null) : InterceptResult()
data class Failure(val reason: String) : InterceptResult()
}
diff --git a/app/src/main/res/values/strings_sy.xml b/app/src/main/res/values/strings_sy.xml
index 742c130d1..a85d7d693 100644
--- a/app/src/main/res/values/strings_sy.xml
+++ b/app/src/main/res/values/strings_sy.xml
@@ -437,9 +437,11 @@
Importing manga (url: %1$s, fav: %2$s, forceSource: %3$s)…
Source URI match check error!
Source URI map-to-manga error!
+ Source URI map-to-chapter error!
Source URI clean error!
Failed to update chapters for manga: %1$s!
Could not add manga (url: %1$s)!
+ Could not identify chapter (url: %1$s)!
Launching app…