Add chapter deeplink, make MangaDex use it
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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<EhActivityInterceptBinding>()
|
||||
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<EhActivityInterceptBinding>()
|
||||
|
||||
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<EhActivityInterceptBinding>()
|
||||
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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user