From 0a53d7b28ddcf28917db28fad07a3804ed0fd4c4 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Mon, 10 Feb 2025 13:53:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/data/entities/BaseSource.kt | 22 +++++++++++-------- .../app/ui/book/read/ReadBookActivity.kt | 2 +- .../io/legado/app/ui/book/read/ReadMenu.kt | 13 ++++++----- .../res/layout-land/activity_book_info.xml | 4 ++-- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/entities/BaseSource.kt b/app/src/main/java/io/legado/app/data/entities/BaseSource.kt index 93cb5723e..79c8cdae8 100644 --- a/app/src/main/java/io/legado/app/data/entities/BaseSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BaseSource.kt @@ -103,16 +103,20 @@ interface BaseSource : JsExtensions { */ fun getHeaderMap(hasLoginHeader: Boolean = false) = HashMap().apply { header?.let { - val json = when { - it.startsWith("@js:", true) -> evalJS(it.substring(4)).toString() - it.startsWith("", true) -> evalJS( - it.substring(4, it.lastIndexOf("<")) - ).toString() + try { + val json = when { + it.startsWith("@js:", true) -> evalJS(it.substring(4)).toString() + it.startsWith("", true) -> evalJS( + it.substring(4, it.lastIndexOf("<")) + ).toString() - else -> it - } - GSON.fromJsonObject>(json).getOrNull()?.let { map -> - putAll(map) + else -> it + } + GSON.fromJsonObject>(json).getOrNull()?.let { map -> + putAll(map) + } + } catch (e: Exception) { + AppLog.put("getHeaderMap 出错\n$e", e) } } if (!has(AppConst.UA_NAME, true)) { diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index b4821d3fa..1f1b89eb4 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -1293,7 +1293,7 @@ class ReadBookActivity : BaseReadBookActivity(), analyzeRule.setBaseUrl(chapter.url) analyzeRule.chapter = chapter analyzeRule.evalJS(payAction).toString() - }.onSuccess { + }.onSuccess(IO) { if (it.isAbsUrl()) { startActivity { putExtra("title", getString(R.string.chapter_pay)) diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt index a70a310f8..d68810b65 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt @@ -23,6 +23,7 @@ import io.legado.app.help.config.AppConfig import io.legado.app.help.config.LocalConfig import io.legado.app.help.config.ReadBookConfig import io.legado.app.help.config.ThemeConfig +import io.legado.app.help.coroutine.Coroutine import io.legado.app.lib.dialogs.alert import io.legado.app.lib.theme.Selector import io.legado.app.lib.theme.accentColor @@ -346,11 +347,13 @@ class ReadMenu @JvmOverloads constructor( if (AppConfig.readUrlInBrowser) { context.openUrl(tvChapterUrl.text.toString().substringBefore(",{")) } else { - context.startActivity { - val url = tvChapterUrl.text.toString() - putExtra("title", tvChapterName.text) - putExtra("url", url) - IntentData.put(url, ReadBook.bookSource?.getHeaderMap(true)) + Coroutine.async { + context.startActivity { + val url = tvChapterUrl.text.toString() + putExtra("title", tvChapterName.text) + putExtra("url", url) + IntentData.put(url, ReadBook.bookSource?.getHeaderMap(true)) + } } } } diff --git a/app/src/main/res/layout-land/activity_book_info.xml b/app/src/main/res/layout-land/activity_book_info.xml index 668121b9e..b3bd0265e 100644 --- a/app/src/main/res/layout-land/activity_book_info.xml +++ b/app/src/main/res/layout-land/activity_book_info.xml @@ -159,7 +159,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - +