nkuppan / expensemanager

Enable users to store their expense & incomes and keep track of their finances.
https://expensemanager.naveenapps.com/
Apache License 2.0
109 stars 18 forks source link

Refactor CategorySelectionViewModel to remove Redundant code #13

Open Tonnie-Dev opened 5 months ago

Tonnie-Dev commented 5 months ago

Rewrote selectAllThisCategory() on CategorySelectionViewModel to remove code redundancy.

Local Variable selectedCategories will always be empty after calling clearChanges()

    `viewModelScope.launch {
        clearChanges()
         //selectedCategories will always be empty after clearChanges() is called
        val selectedCategories = _selectedCategory.value.toMutableList()

        repeat(categories.size) {
            val category = categories[it]

         //selectedCategory will always evaluate to null as we are filtering an Empty List
            val selectedCategory = selectedCategories.firstOrNull {
                category.id == it.id
            }

          //this check is redundant as selectedCategory is null
            if (selectedCategory == null) {
                selectedCategories.add(category)
            }
        }`

**To remove the above redundancy, we should update _selectedCategories directly.

 `viewModelScope.launch {

        clearChanges()// clear the current list of selected categories

        _selectedCategories.value = categories //assign categories directly
    }`

This function is now more efficient as it doesn't perform unnecessary checks or operations. It simply replaces the old selections with the new ones