From 6abf5002eb3df105e96da0020fcb602bdb04a9ba Mon Sep 17 00:00:00 2001 From: kunfei Date: Thu, 5 May 2022 08:51:03 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/data/dao/CacheDao.kt | 3 +++ .../main/java/io/legado/app/help/CacheManager.kt | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/dao/CacheDao.kt b/app/src/main/java/io/legado/app/data/dao/CacheDao.kt index 863199b75..7ebd9bbd9 100644 --- a/app/src/main/java/io/legado/app/data/dao/CacheDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/CacheDao.kt @@ -9,6 +9,9 @@ import io.legado.app.data.entities.Cache @Dao interface CacheDao { + @Query("select * from caches where `key` = :key") + fun get(key: String): Cache? + @Query("select value from caches where `key` = :key and (deadline = 0 or deadline > :now)") fun get(key: String, now: Long): String? diff --git a/app/src/main/java/io/legado/app/help/CacheManager.kt b/app/src/main/java/io/legado/app/help/CacheManager.kt index 156b16998..a79bb2720 100644 --- a/app/src/main/java/io/legado/app/help/CacheManager.kt +++ b/app/src/main/java/io/legado/app/help/CacheManager.kt @@ -36,15 +36,23 @@ object CacheManager { } fun get(key: String): String? { - return getFromMemory(key) ?: appDb.cacheDao.get(key, System.currentTimeMillis()) + getFromMemory(key)?.let { + return it + } + val cache = appDb.cacheDao.get(key) + if (cache != null && (cache.deadline == 0L || cache.deadline > System.currentTimeMillis())) { + memoryLruCache.put(key, cache) + return cache.value + } + return null } - //从内存中获取数据 使用lrucache 支持过期功能 + //从内存中获取数据 使用lruCache 支持过期功能 private fun getFromMemory(key: String): String? { val cache = memoryLruCache.get(key) ?: return null - val deadline = cache!!.deadline + val deadline = cache.deadline return if (deadline == 0L || deadline > System.currentTimeMillis()) { - cache!!.value + cache.value } else { memoryLruCache.remove(key) null From 066de03182f781d03dbaad0a8ee45066347c3adb Mon Sep 17 00:00:00 2001 From: kunfei Date: Thu, 5 May 2022 14:51:33 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/ui/association/VerificationCodeDialog.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/association/VerificationCodeDialog.kt b/app/src/main/java/io/legado/app/ui/association/VerificationCodeDialog.kt index 0e8265f7a..a1c6bb928 100644 --- a/app/src/main/java/io/legado/app/ui/association/VerificationCodeDialog.kt +++ b/app/src/main/java/io/legado/app/ui/association/VerificationCodeDialog.kt @@ -1,9 +1,9 @@ package io.legado.app.ui.association +import android.annotation.SuppressLint import android.os.Bundle import android.view.View import android.view.ViewGroup -import android.net.Uri import com.bumptech.glide.request.RequestOptions import io.legado.app.R import io.legado.app.base.BaseDialogFragment @@ -39,11 +39,12 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification setLayout(1f, ViewGroup.LayoutParams.WRAP_CONTENT) } + @SuppressLint("CheckResult") override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { binding.run { toolBar.setBackgroundColor(primaryColor) val sourceOrigin = arguments?.getString("sourceOrigin") - val key = "${sourceOrigin ?: ""}_verificationResult" + val key = "${sourceOrigin}_verificationResult" arguments?.getString("imageUrl")?.let { imageUrl -> ImageLoader.load(requireContext(), imageUrl).apply { sourceOrigin?.let { @@ -62,7 +63,7 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification } tvOk.setOnClickListener { val verificationCode = binding.verificationCode.text.toString() - verificationCode?.let { + verificationCode.let { CacheManager.put(key, it) dismiss() } @@ -75,7 +76,7 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification override fun onDestroy() { val sourceOrigin = arguments?.getString("sourceOrigin") - val key = "${sourceOrigin ?: ""}_verificationResult" + val key = "${sourceOrigin}_verificationResult" CacheManager.get(key) ?: CacheManager.put(key, "") super.onDestroy() activity?.finish() From d4e1af532f47b11af27669155c03e74ba0a25f95 Mon Sep 17 00:00:00 2001 From: kunfei Date: Thu, 5 May 2022 17:16:58 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/help/SourceVerificationHelp.kt | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/SourceVerificationHelp.kt b/app/src/main/java/io/legado/app/help/SourceVerificationHelp.kt index 3f3a302dc..8efbf914b 100644 --- a/app/src/main/java/io/legado/app/help/SourceVerificationHelp.kt +++ b/app/src/main/java/io/legado/app/help/SourceVerificationHelp.kt @@ -1,13 +1,13 @@ package io.legado.app.help -import io.legado.app.utils.startActivity import io.legado.app.constant.AppLog -import io.legado.app.exception.NoStackTraceException import io.legado.app.data.entities.BaseSource -import io.legado.app.ui.browser.WebViewActivity +import io.legado.app.exception.NoStackTraceException import io.legado.app.ui.association.VerificationCodeActivity -import splitties.init.appCtx +import io.legado.app.ui.browser.WebViewActivity +import io.legado.app.utils.startActivity import kotlinx.coroutines.runBlocking +import splitties.init.appCtx object SourceVerificationHelp { @@ -19,13 +19,13 @@ object SourceVerificationHelp { fun getVerificationResult(source: BaseSource?, url: String, title: String, useBrowser: Boolean): String { source ?: throw NoStackTraceException("getVerificationResult parameter source cannot be null") return runBlocking { - val key = "${source?.getKey() ?: ""}_verificationResult" + val key = "${source.getKey()}_verificationResult" CacheManager.delete(key) if (!useBrowser) { appCtx.startActivity { putExtra("imageUrl", url) - putExtra("sourceOrigin", source?.getKey()) + putExtra("sourceOrigin", source.getKey()) } } else { startBrowser(source, url, title, true) @@ -39,10 +39,8 @@ object SourceVerificationHelp { } } CacheManager.get(key)!!.let { - if (it.isBlank()) { + it.ifBlank { throw NoStackTraceException("验证结果为空") - } else { - it } } } @@ -57,9 +55,9 @@ object SourceVerificationHelp { appCtx.startActivity { putExtra("title", title) putExtra("url", url) - putExtra("sourceOrigin", source?.getKey()) + putExtra("sourceOrigin", source.getKey()) putExtra("sourceVerificationEnable", saveResult) - IntentData.put(url, source?.getHeaderMap(true)) + IntentData.put(url, source.getHeaderMap(true)) } }