From 8bbf8045eced20fb7e19058445833ff6873f187a Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sat, 9 Jul 2022 20:13:27 +0200 Subject: [PATCH] Entirely remove apps from favorites when their activity cannot be launched --- .../de/mm20/launcher2/favorites/FavoritesRepository.kt | 9 +++++++++ .../ui/launcher/search/common/SearchableItemVM.kt | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesRepository.kt b/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesRepository.kt index 3327458e..ac30b67e 100644 --- a/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesRepository.kt +++ b/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesRepository.kt @@ -39,6 +39,7 @@ interface FavoritesRepository { fun saveFavorites(favorites: List) fun getHiddenItems(): Flow> fun getHiddenItemKeys(): Flow> + fun remove(searchable: Searchable) suspend fun export(toDir: File) suspend fun import(fromDir: File) @@ -194,6 +195,14 @@ internal class FavoritesRepositoryImpl( return database.searchDao().getHiddenItemKeys() } + override fun remove(searchable: Searchable) { + scope.launch { + withContext(Dispatchers.IO) { + database.searchDao().deleteByKey(searchable.key) + } + } + } + private fun fromDatabaseEntity(entity: FavoritesItemEntity): FavoritesItem { val deserializer: SearchableDeserializer = diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/SearchableItemVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/SearchableItemVM.kt index a01c26f9..9f3d6a83 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/SearchableItemVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/SearchableItemVM.kt @@ -68,7 +68,7 @@ abstract class SearchableItemVM( favoritesRepository.incrementLaunchCounter(searchable) return true } else if (searchable is Application) { - favoritesRepository.unpinItem(searchable) + favoritesRepository.remove(searchable) } return false }