From 5b99841f06642083527922447cd644f42000ade5 Mon Sep 17 00:00:00 2001 From: eliotcougar Date: Thu, 10 Sep 2026 06:33:22 +0300 Subject: [PATCH] fix: validate asset edits before deleting the cached file (#6190) Reject duplicate names and empty names or URLs before invalidating the existing asset cache. Previously a rejected save left the stored source unchanged but deleted its downloaded file. Preserve the validation messages and their order, duplicate-name exclusion by asset ID, and successful-save behavior. Renames still invalidate the old filename before updating the asset record. --- .../ang/ui/userasset/UserAssetUrlActivity.kt | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetUrlActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetUrlActivity.kt index b2c8396c..4ad1245f 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetUrlActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetUrlActivity.kt @@ -81,6 +81,20 @@ class UserAssetUrlActivity : BaseComponentActivity() { } private fun saveServer(remarks: String, url: String): Boolean { + val assetList = MmkvManager.decodeAssetUrls() + if (assetList.any { it.assetUrl.remarks == remarks && it.guid != editAssetId }) { + toast(R.string.msg_remark_is_duplicate) + return false + } + if (TextUtils.isEmpty(remarks)) { + toast(R.string.sub_setting_remarks) + return false + } + if (TextUtils.isEmpty(url)) { + toast(R.string.title_url) + return false + } + var assetItem = MmkvManager.decodeAsset(editAssetId) var assetId = editAssetId if (assetItem != null) { @@ -100,20 +114,6 @@ class UserAssetUrlActivity : BaseComponentActivity() { assetItem.remarks = remarks assetItem.url = url - val assetList = MmkvManager.decodeAssetUrls() - if (assetList.any { it.assetUrl.remarks == assetItem.remarks && it.guid != assetId }) { - toast(R.string.msg_remark_is_duplicate) - return false - } - if (TextUtils.isEmpty(assetItem.remarks)) { - toast(R.string.sub_setting_remarks) - return false - } - if (TextUtils.isEmpty(assetItem.url)) { - toast(R.string.title_url) - return false - } - MmkvManager.encodeAsset(assetId, assetItem) toastSuccess(R.string.toast_success) finish()