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 1d74330f..48aba1f3 100644 --- a/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesRepository.kt +++ b/favorites/src/main/java/de/mm20/launcher2/favorites/FavoritesRepository.kt @@ -44,30 +44,38 @@ internal class FavoritesRepositoryImpl( withContext(Dispatchers.IO) { val gridColumns = dataStore.data.map { it.grid.columnCount }.distinctUntilChanged() + val enableFavorites = dataStore.data.map { it.favorites.enabled}.distinctUntilChanged() val dao = database.searchDao() - val pinnedFavorites = dao.getFavorites().map { - it.mapNotNull { - val item = fromDatabaseEntity(it).searchable - if (item == null) { - dao.deleteByKey(it.key) - } - return@mapNotNull item + enableFavorites.collectLatest { + if (!it) { + send(emptyList()) + return@collectLatest } - } - pinnedFavorites.collectLatest { pinned -> - gridColumns.collectLatest { columns -> - var favCount = (pinned.size.toDouble() / columns).ceilToInt() * columns - if (pinned.size < columns) favCount += columns - val autoFavs = dao.getAutoFavorites(favCount - pinned.size).mapNotNull { + val pinnedFavorites = dao.getFavorites().map { + it.mapNotNull { val item = fromDatabaseEntity(it).searchable if (item == null) { dao.deleteByKey(it.key) } return@mapNotNull item } - send(pinned + autoFavs) + } + + pinnedFavorites.collectLatest { pinned -> + gridColumns.collectLatest { columns -> + var favCount = (pinned.size.toDouble() / columns).ceilToInt() * columns + if (pinned.size < columns) favCount += columns + val autoFavs = dao.getAutoFavorites(favCount - pinned.size).mapNotNull { + val item = fromDatabaseEntity(it).searchable + if (item == null) { + dao.deleteByKey(it.key) + } + return@mapNotNull item + } + send(pinned + autoFavs) + } } } }