From 4472162614dc130658cc0e8d09d484c6cfe0d31c Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Tue, 22 Sep 2026 14:30:22 +0800 Subject: [PATCH] Preserve groups when replacing profiles --- .../app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt index 851207f39..c76b75c80 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt @@ -20,6 +20,7 @@ import com.v2ray.ang.BuildConfig import com.v2ray.ang.dto.entities.AssetUrlCache import com.v2ray.ang.dto.entities.AssetUrlItem import com.v2ray.ang.dto.entities.ProfileItem +import com.v2ray.ang.extension.isGroupType import com.v2ray.ang.dto.entities.RulesetItem import com.v2ray.ang.dto.entities.ServerAffiliationInfo import com.v2ray.ang.dto.entities.SubscriptionCache @@ -349,7 +350,9 @@ object MmkvManager { val serverList = if (append) { decodeServerList(subscriptionId) } else { - mutableListOf() + replacedServers.filter { guid -> + decodeServerConfig(guid)?.configType?.isGroupType() == true + }.toMutableList() } val indexedServers = serverList.toHashSet() profiles.keys.forEach { guid -> @@ -373,7 +376,7 @@ object MmkvManager { val referencedByOtherGroups = decodeServersReferencedByOtherGroups(subscriptionId) val removablePayloads = ProfileReplacement.findRemovablePayloads( replacedServers = replacedServers, - replacementServers = profiles.keys, + replacementServers = serverList.toSet(), protectedServer = protectedServer, serversReferencedByOtherGroups = referencedByOtherGroups, )