From 17e0db2ffcd915f89f660f19fb133a6e40fbd5d2 Mon Sep 17 00:00:00 2001 From: Tamim Hossain <132823494+CodeWithTamim@users.noreply.github.com> Date: Fri, 25 Oct 2024 17:06:44 +0600 Subject: [PATCH] Refactor Import Rulesets from Clipboard (#3774) Refactored the import_rulesets_from_clipboard method in RoutingSettingActivity. Improved error handling by isolating the clipboard fetching inside a try-catch block and ensuring the routing ruleset reset logic is handled more cleanly. --- .../v2ray/ang/ui/RoutingSettingActivity.kt | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingActivity.kt index f6c12a96..a9145789 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingActivity.kt @@ -24,6 +24,7 @@ import com.v2ray.ang.util.SettingsManager import com.v2ray.ang.util.Utils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class RoutingSettingActivity : BaseActivity() { private val binding by lazy { ActivityRoutingSettingBinding.inflate(layoutInflater) } @@ -113,30 +114,33 @@ class RoutingSettingActivity : BaseActivity() { R.id.import_rulesets_from_clipboard -> { AlertDialog.Builder(this).setMessage(R.string.routing_settings_import_rulesets_tip) .setPositiveButton(android.R.string.ok) { _, _ -> - try { - val clipboard = Utils.getClipboard(this) - lifecycleScope.launch(Dispatchers.IO) { - val ret = SettingsManager.resetRoutingRulesetsFromClipboard(clipboard) - launch(Dispatchers.Main) { - if (ret) { - refreshData() - toast(R.string.toast_success) - } else { - toast(R.string.toast_failure) - } - } - } + val clipboard = try { + Utils.getClipboard(this) } catch (e: Exception) { e.printStackTrace() + toast(R.string.toast_failure) + return@setPositiveButton + } + lifecycleScope.launch(Dispatchers.IO) { + val result = SettingsManager.resetRoutingRulesetsFromClipboard(clipboard) + withContext(Dispatchers.Main) { + if (result) { + refreshData() + toast(R.string.toast_success) + } else { + toast(R.string.toast_failure) + } + } } } .setNegativeButton(android.R.string.no) { _, _ -> - //do noting + //do nothing } .show() true } + R.id.export_rulesets_to_clipboard -> { val rulesetList = MmkvManager.decodeRoutingRulesets() if (rulesetList.isNullOrEmpty()) {