From 37b7efbc87c45c421974394ee36f86f5cd6e0492 Mon Sep 17 00:00:00 2001 From: d-najd <59766732+d-najd@users.noreply.github.com> Date: Fri, 28 Oct 2022 17:41:51 +0200 Subject: [PATCH] WebView for chapter link (#8281) * backup * doing logic * cleanup * applying suggestion Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com> * requested changes Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com> --- .../eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt | 13 +++++++++++++ .../kanade/tachiyomi/ui/reader/ReaderPresenter.kt | 10 ++++++++++ app/src/main/res/drawable/ic_webview_24dp.xml | 7 +++++++ app/src/main/res/menu/reader.xml | 7 +++++++ 4 files changed, 37 insertions(+) create mode 100644 app/src/main/res/drawable/ic_webview_24dp.xml diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index d7bc246400..21d8095e80 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -66,6 +66,7 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer import eu.kanade.tachiyomi.ui.reader.viewer.ReaderProgressIndicator import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer +import eu.kanade.tachiyomi.ui.webview.WebViewActivity import eu.kanade.tachiyomi.util.preference.toggle import eu.kanade.tachiyomi.util.system.applySystemAnimatorScale import eu.kanade.tachiyomi.util.system.createReaderThemeContext @@ -275,6 +276,9 @@ class ReaderActivity : BaseRxActivity() { */ override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { + R.id.action_open_in_web_view -> { + openChapterInWebview() + } R.id.action_bookmark -> { presenter.bookmarkCurrentChapter(true) invalidateOptionsMenu() @@ -665,6 +669,15 @@ class ReaderActivity : BaseRxActivity() { startPostponedEnterTransition() } + private fun openChapterInWebview() { + val manga = presenter.manga ?: return + val source = presenter.getSource() ?: return + val url = presenter.getChapterUrl() ?: return + + val intent = WebViewActivity.newIntent(this, url, source.id, manga.title) + startActivity(intent) + } + private fun showReadingModeToast(mode: Int) { try { val strings = resources.getStringArray(R.array.viewers_selector) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index 02589dbc55..1a2c141b1f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -35,6 +35,7 @@ import eu.kanade.tachiyomi.data.track.job.DelayedTrackingStore import eu.kanade.tachiyomi.data.track.job.DelayedTrackingUpdateJob import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.reader.loader.ChapterLoader import eu.kanade.tachiyomi.ui.reader.loader.DownloadPageLoader @@ -606,6 +607,15 @@ class ReaderPresenter( return viewerChaptersRelay.value?.currChapter } + fun getSource() = manga?.source?.let { sourceManager.getOrStub(it) } as? HttpSource + + fun getChapterUrl(): String? { + val sChapter = getCurrentChapter()?.chapter ?: return null + val source = getSource() ?: return null + + return source.getChapterUrl(sChapter) + } + /** * Bookmarks the currently active chapter. */ diff --git a/app/src/main/res/drawable/ic_webview_24dp.xml b/app/src/main/res/drawable/ic_webview_24dp.xml new file mode 100644 index 0000000000..cd993e203d --- /dev/null +++ b/app/src/main/res/drawable/ic_webview_24dp.xml @@ -0,0 +1,7 @@ + + + diff --git a/app/src/main/res/menu/reader.xml b/app/src/main/res/menu/reader.xml index 419c9674f3..0d29f06d5d 100644 --- a/app/src/main/res/menu/reader.xml +++ b/app/src/main/res/menu/reader.xml @@ -16,4 +16,11 @@ app:iconTint="?attr/colorOnSurface" app:showAsAction="ifRoom" /> + +