Refactor favorites and searchable database
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
</manifest>
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
package de.mm20.launcher2.services.favorites
|
||||
|
||||
import de.mm20.launcher2.search.SavableSearchable
|
||||
import de.mm20.launcher2.searchable.SearchableRepository
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
class FavoritesService(
|
||||
val searchableRepository: SearchableRepository,
|
||||
) {
|
||||
|
||||
|
||||
fun getFavorites(
|
||||
includeTypes: List<String>? = null,
|
||||
excludeTypes: List<String>? = null,
|
||||
manuallySorted: Boolean = false,
|
||||
automaticallySorted: Boolean = false,
|
||||
frequentlyUsed: Boolean = false,
|
||||
limit: Int = 100,
|
||||
): Flow<List<SavableSearchable>> {
|
||||
return searchableRepository.get(
|
||||
hidden = false,
|
||||
includeTypes = includeTypes,
|
||||
excludeTypes = excludeTypes,
|
||||
manuallySorted = manuallySorted,
|
||||
automaticallySorted = automaticallySorted,
|
||||
frequentlyUsed = frequentlyUsed,
|
||||
limit = limit,
|
||||
)
|
||||
}
|
||||
fun isPinned(searchable: SavableSearchable): Flow<Boolean> {
|
||||
return searchableRepository.isPinned(searchable)
|
||||
}
|
||||
|
||||
fun pinItem(searchable: SavableSearchable) {
|
||||
searchableRepository.upsert(
|
||||
searchable,
|
||||
pinned = true,
|
||||
hidden = false,
|
||||
)
|
||||
}
|
||||
|
||||
fun reset(searchable: SavableSearchable) {
|
||||
searchableRepository.update(
|
||||
searchable,
|
||||
pinned = false,
|
||||
hidden = false,
|
||||
weight = 0.0,
|
||||
launchCount = 0,
|
||||
)
|
||||
}
|
||||
|
||||
fun unpinItem(searchable: SavableSearchable) {
|
||||
searchableRepository.upsert(
|
||||
searchable,
|
||||
pinned = false,
|
||||
)
|
||||
}
|
||||
|
||||
fun reportLaunch(searchable: SavableSearchable) {
|
||||
searchableRepository.touch(searchable)
|
||||
}
|
||||
|
||||
fun updateFavorites(
|
||||
manuallySorted: List<SavableSearchable>,
|
||||
automaticallySorted: List<SavableSearchable>
|
||||
) {
|
||||
searchableRepository.updateFavorites(
|
||||
manuallySorted = manuallySorted,
|
||||
automaticallySorted = automaticallySorted
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package de.mm20.launcher2.services.favorites
|
||||
|
||||
import org.koin.dsl.module
|
||||
|
||||
val favoritesModule = module {
|
||||
factory { FavoritesService(get()) }
|
||||
}
|
||||
Reference in New Issue
Block a user