From 6cd04b831f81453865d6d3dbc488d055e51cef0d Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Tue, 24 Feb 2026 16:55:16 +0800 Subject: [PATCH] Improve search https://github.com/2dust/v2rayNG/issues/5313 --- .../app/src/main/java/com/v2ray/ang/AppConfig.kt | 1 - .../java/com/v2ray/ang/viewmodel/MainViewModel.kt | 14 ++++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt index 61a78e01..b8b48d76 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt @@ -77,7 +77,6 @@ object AppConfig { /** Cache keys. */ const val CACHE_SUBSCRIPTION_ID = "cache_subscription_id" - const val CACHE_KEYWORD_FILTER = "cache_keyword_filter" /** Protocol identifiers. */ const val PROTOCOL_FREEDOM = "freedom" diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/MainViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/MainViewModel.kt index 8d863612..242dc638 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/MainViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/MainViewModel.kt @@ -37,8 +37,6 @@ import java.util.Collections class MainViewModel(application: Application) : AndroidViewModel(application) { private var serverList = mutableListOf() // MmkvManager.decodeServerList() var subscriptionId: String = MmkvManager.decodeSettingsString(AppConfig.CACHE_SUBSCRIPTION_ID, "").orEmpty() - - //var keywordFilter: String = MmkvManager.MmkvManager.decodeSettingsString(AppConfig.CACHE_KEYWORD_FILTER, "")?:"" var keywordFilter = "" val serversCache = mutableListOf() val isRunning by lazy { MutableLiveData() } @@ -149,6 +147,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { @Synchronized fun updateCache() { serversCache.clear() + val kw = keywordFilter.trim().lowercase() for (guid in serverList) { val profile = MmkvManager.decodeServerConfig(guid) ?: continue // var profile = MmkvManager.decodeProfileConfig(guid) @@ -167,8 +166,16 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { // if (subscriptionId.isNotEmpty() && subscriptionId != profile.subscriptionId) { // continue // } + if (kw.isEmpty()) { + serversCache.add(ServersCache(guid, profile)) + continue + } - if (keywordFilter.isEmpty() || profile.remarks.lowercase().contains(keywordFilter.lowercase())) { + val remarks = profile.remarks.lowercase() + val description = profile.description.orEmpty().lowercase() + val server = profile.server.orEmpty().lowercase() + + if (remarks.contains(kw) || description.contains(kw) || server.contains(kw)) { serversCache.add(ServersCache(guid, profile)) } } @@ -430,7 +437,6 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { return } keywordFilter = keyword - MmkvManager.encodeSettings(AppConfig.CACHE_KEYWORD_FILTER, keywordFilter) reloadServerList() }