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.
This commit is contained in:
Tamim Hossain authored and GitHub committed 2024-08-03 10:20:28 +08:00
1 parent 06649df8b1
commit b6959b5990
1 file changed
+7 -43
@@ -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<String>(
// 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 {