Fix favorites enabled/disabled setting

This commit is contained in:
MM20 2022-01-30 17:40:47 +01:00
parent b22bedd0f2
commit 651f0bb916
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -44,30 +44,38 @@ internal class FavoritesRepositoryImpl(
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
val gridColumns = dataStore.data.map { it.grid.columnCount }.distinctUntilChanged() val gridColumns = dataStore.data.map { it.grid.columnCount }.distinctUntilChanged()
val enableFavorites = dataStore.data.map { it.favorites.enabled}.distinctUntilChanged()
val dao = database.searchDao() val dao = database.searchDao()
val pinnedFavorites = dao.getFavorites().map { enableFavorites.collectLatest {
it.mapNotNull { if (!it) {
val item = fromDatabaseEntity(it).searchable send(emptyList())
if (item == null) { return@collectLatest
dao.deleteByKey(it.key)
}
return@mapNotNull item
} }
}
pinnedFavorites.collectLatest { pinned -> val pinnedFavorites = dao.getFavorites().map {
gridColumns.collectLatest { columns -> it.mapNotNull {
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 val item = fromDatabaseEntity(it).searchable
if (item == null) { if (item == null) {
dao.deleteByKey(it.key) dao.deleteByKey(it.key)
} }
return@mapNotNull item 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)
}
} }
} }
} }