From b0bcad861f45a0bc2353a44bac9f0020d9c6ef9e Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Wed, 2 Jun 2021 17:17:11 -0400 Subject: [PATCH] Open merged manga in webview properly --- .../tachiyomi/ui/manga/MangaController.kt | 25 ++++++++++++++++--- .../tachiyomi/ui/manga/MangaPresenter.kt | 3 ++- .../ui/manga/info/MangaInfoHeaderAdapter.kt | 6 ++++- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt index 1fec458c5..3f49cd5c0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt @@ -652,17 +652,34 @@ class MangaController : mangaInfoAdapter?.setTrackingCount(trackCount) } - fun openMangaInWebView() { - val source = presenter.source as? HttpSource ?: return + // SY --> + fun openMergedMangaWebview() { + val sourceManager: SourceManager = Injekt.get() + val mergedManga = presenter.mergedManga.filterNot { it.source == MERGED_SOURCE_ID } + val sources = mergedManga.map { sourceManager.getOrStub(it.source) } + MaterialDialog(activity!!) + .title(R.string.action_open_in_web_view) + .listItemsSingleChoice( + items = mergedManga.mapIndexed { index, _ -> sources[index].toString() } + ) { _, index, _ -> + openMangaInWebView(mergedManga[index], sources[index] as? HttpSource) + } + .negativeButton(android.R.string.cancel) + .show() + } + // SY <-- + + fun openMangaInWebView(manga: Manga = presenter.manga, source: HttpSource? = presenter.source as? HttpSource) { + source ?: return val url = try { - source.mangaDetailsRequest(presenter.manga).url.toString() + source.mangaDetailsRequest(manga).url.toString() } catch (e: Exception) { return } val activity = activity ?: return - val intent = WebViewActivity.newIntent(activity, url, source.id, presenter.manga.title) + val intent = WebViewActivity.newIntent(activity, url, source.id, manga.title) startActivity(intent) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt index 3b99e27b2..1a64d2e32 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt @@ -148,7 +148,8 @@ class MangaPresenter( var meta: RaisedSearchMetadata? = null - private var mergedManga = emptyList() + var mergedManga = emptyList() + private set var dedupe: Boolean = true diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoHeaderAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoHeaderAdapter.kt index 229728860..6d7456496 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoHeaderAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoHeaderAdapter.kt @@ -136,7 +136,11 @@ class MangaInfoHeaderAdapter( if (controller.presenter.source is HttpSource) { binding.btnWebview.isVisible = true binding.btnWebview.clicks() - .onEach { controller.openMangaInWebView() } + .onEach { + if (controller.presenter.source.id == MERGED_SOURCE_ID) { + controller.openMergedMangaWebview() + } else controller.openMangaInWebView() + } .launchIn(controller.viewScope) }