diff --git a/app/src/main/kotlin/org/fossify/launcher/activities/MainActivity.kt b/app/src/main/kotlin/org/fossify/launcher/activities/MainActivity.kt index 0dba148..b13cae0 100644 --- a/app/src/main/kotlin/org/fossify/launcher/activities/MainActivity.kt +++ b/app/src/main/kotlin/org/fossify/launcher/activities/MainActivity.kt @@ -199,12 +199,12 @@ class MainActivity : SimpleActivity(), FlingListener { } ensureBackgroundThread { - if (IconCache.cachedLaunchers.isEmpty()) { + if (IconCache.launchers.isEmpty()) { val hiddenIcons = hiddenIconsDB.getHiddenIcons().map { it.getIconIdentifier() } - IconCache.cachedLaunchers = launchersDB.getAppLaunchers().filter { + IconCache.launchers = launchersDB.getAppLaunchers().filter { val showIcon = !hiddenIcons.contains(it.getLauncherIdentifier()) if (!showIcon) { try { @@ -216,7 +216,7 @@ class MainActivity : SimpleActivity(), FlingListener { }.toMutableList() as ArrayList } - binding.allAppsFragment.root.gotLaunchers(IconCache.cachedLaunchers) + binding.allAppsFragment.root.gotLaunchers(IconCache.launchers) refreshLaunchers() } @@ -517,20 +517,14 @@ class MainActivity : SimpleActivity(), FlingListener { binding.allAppsFragment.root.gotLaunchers(launchers) binding.widgetsFragment.root.getAppWidgets() - var hasDeletedAnything = false - IconCache.cachedLaunchers.map { it.packageName }.forEach { packageName -> + IconCache.launchers.map { it.packageName }.forEach { packageName -> if (!launchers.map { it.packageName }.contains(packageName)) { - hasDeletedAnything = true launchersDB.deleteApp(packageName) homeScreenGridItemsDB.deleteByPackageName(packageName) } } - if (hasDeletedAnything) { - binding.homeScreenGrid.root.fetchGridItems() - } - - IconCache.cachedLaunchers = launchers + IconCache.launchers = launchers if (!config.wasHomeScreenInit) { ensureBackgroundThread { @@ -538,6 +532,8 @@ class MainActivity : SimpleActivity(), FlingListener { config.wasHomeScreenInit = true binding.homeScreenGrid.root.fetchGridItems() } + } else { + binding.homeScreenGrid.root.fetchGridItems() } } @@ -683,7 +679,8 @@ class MainActivity : SimpleActivity(), FlingListener { binding.mainHolder.performHapticFeedback() } - val anchorY = binding.homeScreenGrid.root.sideMargins.top + (clickedGridItem.top * binding.homeScreenGrid.root.cellHeight.toFloat()) + val anchorY = binding.homeScreenGrid.root.sideMargins.top + + (clickedGridItem.top * binding.homeScreenGrid.root.cellHeight.toFloat()) showHomeIconMenu(x, anchorY, clickedGridItem, false) } diff --git a/app/src/main/kotlin/org/fossify/launcher/helpers/IconCache.kt b/app/src/main/kotlin/org/fossify/launcher/helpers/IconCache.kt index 1201c34..1a50bb2 100644 --- a/app/src/main/kotlin/org/fossify/launcher/helpers/IconCache.kt +++ b/app/src/main/kotlin/org/fossify/launcher/helpers/IconCache.kt @@ -3,5 +3,18 @@ package org.fossify.launcher.helpers import org.fossify.launcher.models.AppLauncher object IconCache { - var cachedLaunchers = emptyList() -} + @Volatile + private var cachedLaunchers = emptyList() + + var launchers: List + get() = cachedLaunchers + set(value) { + synchronized(this) { + cachedLaunchers = value + } + } + + fun clear() { + launchers = emptyList() + } +} \ No newline at end of file