refactor search to not perform unnecessary updates

This commit is contained in:
korigamik-hypr 2024-12-11 00:45:46 +05:30
commit e38e7ced3f
No known key found for this signature in database
GPG key ID: 4B96459AA367C2FD
2 changed files with 23 additions and 14 deletions

View file

@ -886,6 +886,9 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
} }
private fun setAppViewDetails() { private fun setAppViewDetails() {
lifecycleScope.launch(Dispatchers.Default) {
filterItems(searchView.text.toString())
}
searchSwitcher.setImageDrawable( searchSwitcher.setImageDrawable(
ResourcesCompat.getDrawable( ResourcesCompat.getDrawable(
resources, resources,
@ -980,21 +983,29 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
} }
private suspend fun filterItems(query: String?) { private suspend fun filterItems(query: String?) {
val cleanQuery = stringUtils.cleanString(query) val cleanQuery = stringUtils.cleanString(query)
val newFilteredApps = mutableListOf<Triple<LauncherActivityInfo, UserHandle, Int>>() when (menuView.displayedChild) {
val updatedApps = appUtils.getInstalledApps() 0 -> {
val newFilteredApps = mutableListOf<Triple<LauncherActivityInfo, UserHandle, Int>>()
getFilteredApps(cleanQuery, newFilteredApps, updatedApps) val updatedApps = appUtils.getInstalledApps()
if (sharedPreferenceManager.areContactsEnabled() && cleanQuery != null) { val filteredApps = getFilteredApps(cleanQuery, newFilteredApps, updatedApps)
updateContacts(cleanQuery) if (filteredApps != null) {
applySearchFilter(filteredApps)
}
}
1 -> {
if (sharedPreferenceManager.areContactsEnabled() && cleanQuery != null) {
updateContacts(cleanQuery)
}
}
} }
} }
private suspend fun getFilteredApps(cleanQuery: String?, newFilteredApps: MutableList<Triple<LauncherActivityInfo, UserHandle, Int>>, updatedApps: List<Triple<LauncherActivityInfo, UserHandle, Int>>) { private suspend fun getFilteredApps(cleanQuery: String?, newFilteredApps: MutableList<Triple<LauncherActivityInfo, UserHandle, Int>>, updatedApps: List<Triple<LauncherActivityInfo, UserHandle, Int>>): List<Triple<LauncherActivityInfo, UserHandle, Int>>? {
if (cleanQuery.isNullOrEmpty()) { if (cleanQuery.isNullOrEmpty()) {
isJobActive = true isJobActive = true
updateMenu(updatedApps) updateMenu(updatedApps)
return null
} else { } else {
isJobActive = false isJobActive = false
@ -1020,16 +1031,15 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
} }
} }
} }
applySearchFilter(newFilteredApps) return newFilteredApps
} }
} }
private suspend fun applySearchFilter(newFilteredApps: MutableList<Triple<LauncherActivityInfo, UserHandle, Int>>) { private suspend fun applySearchFilter(newFilteredApps: List<Triple<LauncherActivityInfo, UserHandle, Int>>) {
if (sharedPreferenceManager.isAutoLaunchEnabled() && menuView.displayedChild == 0 && appAdapter?.shortcutTextView == null && newFilteredApps.size == 1) { if (sharedPreferenceManager.isAutoLaunchEnabled() && menuView.displayedChild == 0 && appAdapter?.shortcutTextView == null && newFilteredApps.size == 1) {
appUtils.launchApp(newFilteredApps[0].first.componentName, newFilteredApps[0].second) appUtils.launchApp(newFilteredApps[0].first.componentName, newFilteredApps[0].second)
} else if (!listsEqual(installedApps, newFilteredApps)) { } else {
updateMenu(newFilteredApps) updateMenu(newFilteredApps)
installedApps = newFilteredApps installedApps = newFilteredApps
} }
} }

View file

@ -8,8 +8,7 @@ import androidx.preference.SwitchPreference
import eu.ottop.yamlauncher.R import eu.ottop.yamlauncher.R
import eu.ottop.yamlauncher.utils.PermissionUtils import eu.ottop.yamlauncher.utils.PermissionUtils
class AppMenuSettingsFragment : PreferenceFragmentCompat(), TitleProvider { class AppMenuSettingsFragment : PreferenceFragmentCompat(), TitleProvider { private val permissionUtils = PermissionUtils()
private val permissionUtils = PermissionUtils()
private var contactPref: SwitchPreference? = null private var contactPref: SwitchPreference? = null
private var webSearchPref: SwitchPreference? = null private var webSearchPref: SwitchPreference? = null
private var autoLaunchPref: SwitchPreference? = null private var autoLaunchPref: SwitchPreference? = null