From b6959b5990a749bbcf90eb1fe677701be6111411 Mon Sep 17 00:00:00 2001 From: Tamim Hossain <132823494+CodeWithTamim@users.noreply.github.com> Date: Sat, 3 Aug 2024 08:20:28 +0600 Subject: [PATCH] Refactor filterConfig Function for Simplified Code and Reusability (#3408) Refactored the `filterConfig` function in `MainViewModel` to simplify the code and improve reusability. The updated implementation reduces redundancy, enhances readability, and streamlines the configuration filtering process, making the code more efficient and maintainable. --- .../com/v2ray/ang/viewmodel/MainViewModel.kt | 50 +++---------------- 1 file changed, 7 insertions(+), 43 deletions(-) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/MainViewModel.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/MainViewModel.kt index 5f6cab75..e3d9d25e 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/MainViewModel.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/MainViewModel.kt @@ -204,59 +204,23 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { fun filterConfig(context: Context) { val subscriptions = MmkvManager.decodeSubscriptions() - val listId = subscriptions.map { it.first }.toList().toMutableList() - val listRemarks = subscriptions.map { it.second.remarks }.toList().toMutableList() + val listId = subscriptions.map { it.first }.toMutableList() + val listRemarks = subscriptions.map { it.second.remarks }.toMutableList() listRemarks += context.getString(R.string.filter_config_all) - val checkedItem = if (subscriptionId.isNotEmpty()) { - listId.indexOf(subscriptionId) - } else { - listRemarks.count() - 1 - } + val checkedItem = listId.indexOf(subscriptionId).takeIf { it >= 0 } ?: listRemarks.count() - 1 -// val ivBinding = DialogConfigFilterBinding.inflate(LayoutInflater.from(context)) -// ivBinding.spSubscriptionId.adapter = ArrayAdapter( -// context, -// android.R.layout.simple_spinner_dropdown_item, -// listRemarks -// ) -// ivBinding.spSubscriptionId.setSelection(checkedItem) -// ivBinding.etKeyword.text = Utils.getEditable(keywordFilter) -// val builder = AlertDialog.Builder(context).setView(ivBinding.root) -// builder.setTitle(R.string.title_filter_config) -// builder.setPositiveButton(R.string.tasker_setting_confirm) { dialogInterface: DialogInterface?, _: Int -> -// try { -// val position = ivBinding.spSubscriptionId.selectedItemPosition -// subscriptionId = if (listRemarks.count() - 1 == position) { -// "" -// } else { -// subscriptions[position].first -// } -// keywordFilter = ivBinding.etKeyword.text.toString() -// settingsStorage?.encode(AppConfig.CACHE_SUBSCRIPTION_ID, subscriptionId) -// settingsStorage?.encode(AppConfig.CACHE_KEYWORD_FILTER, keywordFilter) -// reloadServerList() -// -// dialogInterface?.dismiss() -// } catch (e: Exception) { -// e.printStackTrace() -// } -// } -// builder.show() AlertDialog.Builder(context) .setSingleChoiceItems(listRemarks.toTypedArray(), checkedItem) { dialog, i -> try { - subscriptionId = if (listRemarks.count() - 1 == i) { - "" - } else { - subscriptions[i].first - } - settingsStorage?.encode(AppConfig.CACHE_SUBSCRIPTION_ID, subscriptionId) + subscriptionId = if (listRemarks.count() - 1 == i) "" else subscriptions[i].first + settingsStorage.encode(AppConfig.CACHE_SUBSCRIPTION_ID, subscriptionId) reloadServerList() dialog.dismiss() } catch (e: Exception) { e.printStackTrace() } - }.show() + } + .show() } fun getPosition(guid: String): Int {