From c060880b493da5ddf1a14dd562222217e9e67006 Mon Sep 17 00:00:00 2001
From: Horis <8674809+821938089@users.noreply.github.com>
Date: Mon, 21 Apr 2025 14:31:09 +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
---
.../app/help/source/BookSourceExtensions.kt | 10 +++++++++-
.../java/io/legado/app/model/SharedJsScope.kt | 5 +++--
.../source/debug/BookSourceDebugActivity.kt | 9 +++++++++
.../book/source/edit/BookSourceEditActivity.kt | 2 +-
.../source/edit/BookSourceEditViewModel.kt | 18 ++++++++++++++++--
app/src/main/res/menu/book_source_debug.xml | 5 +++++
app/src/main/res/values-es-rES/strings.xml | 1 +
app/src/main/res/values-ja-rJP/strings.xml | 1 +
app/src/main/res/values-pt-rBR/strings.xml | 1 +
app/src/main/res/values-vi/strings.xml | 1 +
app/src/main/res/values-zh-rHK/strings.xml | 1 +
app/src/main/res/values-zh-rTW/strings.xml | 1 +
app/src/main/res/values-zh/strings.xml | 1 +
app/src/main/res/values/strings.xml | 1 +
14 files changed, 51 insertions(+), 6 deletions(-)
diff --git a/app/src/main/java/io/legado/app/help/source/BookSourceExtensions.kt b/app/src/main/java/io/legado/app/help/source/BookSourceExtensions.kt
index eda0978df..889197060 100644
--- a/app/src/main/java/io/legado/app/help/source/BookSourceExtensions.kt
+++ b/app/src/main/java/io/legado/app/help/source/BookSourceExtensions.kt
@@ -1,5 +1,6 @@
package io.legado.app.help.source
+import com.script.rhino.runScriptWithContext
import io.legado.app.constant.BookSourceType
import io.legado.app.constant.BookType
import io.legado.app.data.entities.BookSource
@@ -11,7 +12,6 @@ import io.legado.app.utils.MD5Utils
import io.legado.app.utils.fromJsonArray
import io.legado.app.utils.isJsonArray
import io.legado.app.utils.printOnDebug
-import com.script.rhino.runScriptWithContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
@@ -96,6 +96,14 @@ suspend fun BookSourcePart.clearExploreKindsCache() {
}
}
+suspend fun BookSource.clearExploreKindsCache() {
+ withContext(Dispatchers.IO) {
+ val exploreKindsKey = getExploreKindsKey()
+ aCache.remove(exploreKindsKey)
+ exploreKindsMap.remove(exploreKindsKey)
+ }
+}
+
fun BookSource.getBookType(): Int {
return when (bookSourceType) {
BookSourceType.file -> BookType.text or BookType.webFile
diff --git a/app/src/main/java/io/legado/app/model/SharedJsScope.kt b/app/src/main/java/io/legado/app/model/SharedJsScope.kt
index 3ddee85ce..36b6388a1 100644
--- a/app/src/main/java/io/legado/app/model/SharedJsScope.kt
+++ b/app/src/main/java/io/legado/app/model/SharedJsScope.kt
@@ -1,5 +1,6 @@
package io.legado.app.model
+import androidx.collection.LruCache
import com.google.gson.reflect.TypeToken
import com.script.ScriptBindings
import com.script.rhino.RhinoScriptEngine
@@ -24,7 +25,7 @@ object SharedJsScope {
private val cacheFolder = File(appCtx.cacheDir, "shareJs")
private val aCache = ACache.get(cacheFolder)
- private val scopeMap = hashMapOf>()
+ private val scopeMap = LruCache>(16)
fun getScope(jsLib: String?, coroutineContext: CoroutineContext?): Scriptable? {
if (jsLib.isNullOrBlank()) {
@@ -70,7 +71,7 @@ object SharedJsScope {
if (scope is ScriptableObject) {
scope.sealObject()
}
- scopeMap[key] = WeakReference(scope)
+ scopeMap.put(key, WeakReference(scope))
}
return scope
}
diff --git a/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt
index 137227563..6b8ec5928 100644
--- a/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt
@@ -11,6 +11,7 @@ import androidx.lifecycle.lifecycleScope
import io.legado.app.R
import io.legado.app.base.VMBaseActivity
import io.legado.app.databinding.ActivitySourceDebugBinding
+import io.legado.app.help.source.clearExploreKindsCache
import io.legado.app.help.source.exploreKinds
import io.legado.app.lib.dialogs.selector
import io.legado.app.lib.theme.accentColor
@@ -117,6 +118,10 @@ class BookSourceDebugActivity : VMBaseActivity showDialogFragment(TextDialog("html", viewModel.bookSrc))
R.id.menu_toc_src -> showDialogFragment(TextDialog("html", viewModel.tocSrc))
R.id.menu_content_src -> showDialogFragment(TextDialog("html", viewModel.contentSrc))
+ R.id.menu_refresh_explore -> lifecycleScope.launch {
+ viewModel.bookSource?.clearExploreKindsCache()
+ initExploreKinds()
+ }
R.id.menu_help -> showHelp("debugHelp")
}
return super.onCompatOptionsItemSelected(item)
diff --git a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt
index 2eeec34eb..0f9760e1d 100644
--- a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt
@@ -123,7 +123,7 @@ class BookSourceEditActivity :
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_save -> viewModel.save(getSource()) {
- setResult(Activity.RESULT_OK, Intent().putExtra("origin", it.bookSourceUrl))
+ setResult(RESULT_OK, Intent().putExtra("origin", it.bookSourceUrl))
finish()
}
diff --git a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditViewModel.kt
index 4def14d01..80c043064 100644
--- a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditViewModel.kt
+++ b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditViewModel.kt
@@ -12,8 +12,18 @@ import io.legado.app.help.config.SourceConfig
import io.legado.app.help.http.CookieStore
import io.legado.app.help.http.newCallStrResponse
import io.legado.app.help.http.okHttpClient
+import io.legado.app.help.source.clearExploreKindsCache
import io.legado.app.help.storage.ImportOldData
-import io.legado.app.utils.*
+import io.legado.app.utils.GSON
+import io.legado.app.utils.fromJsonArray
+import io.legado.app.utils.fromJsonObject
+import io.legado.app.utils.getClipText
+import io.legado.app.utils.isAbsUrl
+import io.legado.app.utils.isJsonArray
+import io.legado.app.utils.isJsonObject
+import io.legado.app.utils.jsonPath
+import io.legado.app.utils.printOnDebug
+import io.legado.app.utils.toastOnUi
import kotlinx.coroutines.Dispatchers
@@ -41,8 +51,12 @@ class BookSourceEditViewModel(application: Application) : BaseViewModel(applicat
if (source.bookSourceUrl.isBlank() || source.bookSourceName.isBlank()) {
throw NoStackTraceException(context.getString(R.string.non_null_name_url))
}
- if (!source.equal(bookSource ?: BookSource())) {
+ val oldSource = bookSource ?: BookSource()
+ if (!source.equal(oldSource)) {
source.lastUpdateTime = System.currentTimeMillis()
+ if (oldSource.exploreUrl != source.exploreUrl) {
+ oldSource.clearExploreKindsCache()
+ }
}
bookSource?.let {
appDb.bookSourceDao.delete(it)
diff --git a/app/src/main/res/menu/book_source_debug.xml b/app/src/main/res/menu/book_source_debug.xml
index ec7878377..61d06c578 100644
--- a/app/src/main/res/menu/book_source_debug.xml
+++ b/app/src/main/res/menu/book_source_debug.xml
@@ -30,6 +30,11 @@
android:title="@string/content_src"
app:showAsAction="never" />
+
+
- 水平滚动
滤镜
隐藏漫画列表标题
+ 刷新发现
diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml
index 7034b8357..c3651790c 100644
--- a/app/src/main/res/values-ja-rJP/strings.xml
+++ b/app/src/main/res/values-ja-rJP/strings.xml
@@ -1212,4 +1212,5 @@
水平滚动
滤镜
隐藏漫画列表标题
+ 刷新发现
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 41e8b0332..b3bd0b2ae 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -1212,4 +1212,5 @@
水平滚动
滤镜
隐藏漫画列表标题
+ 刷新发现
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index 107051a80..329ec0d70 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -1208,4 +1208,5 @@ Còn
水平滚动
滤镜
隐藏漫画列表标题
+ 刷新发现
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index fbdaf3635..ecec94f69 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -1209,4 +1209,5 @@
水平滚动
滤镜
隐藏漫画列表标题
+ 刷新发现
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 9f35179ce..261653317 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -1211,4 +1211,5 @@
水平滚动
滤镜
隐藏漫画列表标题
+ 刷新发现
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index c8fce01b0..c4ca202ec 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -1211,4 +1211,5 @@
水平滚动
滤镜
隐藏漫画列表标题
+ 刷新发现
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 107fd8481..1f23e8e14 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1212,4 +1212,5 @@
水平滚动
滤镜
隐藏漫画列表标题
+ 刷新发现