Fix favorites enabled/disabled setting
This commit is contained in:
parent
b22bedd0f2
commit
651f0bb916
@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user