From bb5e6f195989169eaa761bcccd5deaa711873125 Mon Sep 17 00:00:00 2001 From: skl256 <111241000+skl256@users.noreply.github.com> Date: Wed, 13 May 2026 13:48:22 +0300 Subject: [PATCH] Fix https://github.com/2dust/v2rayNG/issues/5619 (#5632) Added "Level 0" matching to perform a full check of remarks, server, port, and password before falling back to partial matches. This ensures that identical profiles with the same remarks are correctly identified --- .../java/com/v2ray/ang/handler/AngConfigManager.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt index 4573a037..d087a86f 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt @@ -311,6 +311,16 @@ object AngConfigManager { private fun findMatchedProfileKey(keyToProfile: Map, target: ProfileItem?): String? { if (keyToProfile.isEmpty() || target == null) return null + // Level 0: Full match (remarks + server + port + password) + if (target.remarks.isNotBlank()) { + keyToProfile.entries.firstOrNull { (_, saved) -> + isSameText(saved.remarks, target.remarks) && + isSameText(saved.server, target.server) && + isSameText(saved.serverPort, target.serverPort) && + isSameText(saved.password, target.password) + }?.key?.let { return it } + } + // Level 1: Match by remarks if (target.remarks.isNotBlank()) { keyToProfile.entries.firstOrNull { (_, saved) ->