Add search-only visibility level to items
This commit is contained in:
+2
-3
@@ -1,14 +1,13 @@
|
||||
package de.mm20.launcher2.badges.providers
|
||||
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.rounded.HourglassBottom
|
||||
import androidx.compose.material.icons.rounded.VisibilityOff
|
||||
import de.mm20.launcher2.badges.Badge
|
||||
import de.mm20.launcher2.badges.BadgeIcon
|
||||
import de.mm20.launcher2.badges.R
|
||||
import de.mm20.launcher2.search.SavableSearchable
|
||||
import de.mm20.launcher2.search.Searchable
|
||||
import de.mm20.launcher2.searchable.SavableSearchableRepository
|
||||
import de.mm20.launcher2.searchable.VisibilityLevel
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
@@ -28,7 +27,7 @@ class HiddenItemBadgeProvider(
|
||||
private val scope = CoroutineScope(Job() + Dispatchers.Default)
|
||||
|
||||
private val hiddenItemKeys = searchableRepository.getKeys(
|
||||
hidden = true,
|
||||
maxVisibility = VisibilityLevel.Hidden,
|
||||
limit = 9999,
|
||||
).shareIn(scope, SharingStarted.WhileSubscribed(), 1)
|
||||
|
||||
|
||||
+12
-18
@@ -1,7 +1,9 @@
|
||||
package de.mm20.launcher2.services.favorites
|
||||
|
||||
import de.mm20.launcher2.search.SavableSearchable
|
||||
import de.mm20.launcher2.searchable.PinnedLevel
|
||||
import de.mm20.launcher2.searchable.SavableSearchableRepository
|
||||
import de.mm20.launcher2.searchable.VisibilityLevel
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
class FavoritesService(
|
||||
@@ -10,18 +12,17 @@ class FavoritesService(
|
||||
fun getFavorites(
|
||||
includeTypes: List<String>? = null,
|
||||
excludeTypes: List<String>? = null,
|
||||
manuallySorted: Boolean = false,
|
||||
automaticallySorted: Boolean = false,
|
||||
frequentlyUsed: Boolean = false,
|
||||
minPinnedLevel: PinnedLevel = PinnedLevel.FrequentlyUsed,
|
||||
maxPinnedLevel: PinnedLevel = PinnedLevel.ManuallySorted,
|
||||
limit: Int = 100,
|
||||
): Flow<List<SavableSearchable>> {
|
||||
return searchableRepository.get(
|
||||
includeTypes = includeTypes,
|
||||
excludeTypes = excludeTypes,
|
||||
manuallySorted = manuallySorted,
|
||||
automaticallySorted = automaticallySorted,
|
||||
frequentlyUsed = frequentlyUsed,
|
||||
minPinnedLevel = minPinnedLevel,
|
||||
maxPinnedLevel = maxPinnedLevel,
|
||||
limit = limit,
|
||||
minVisibility = VisibilityLevel.SearchOnly,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -29,8 +30,8 @@ class FavoritesService(
|
||||
return searchableRepository.isPinned(searchable)
|
||||
}
|
||||
|
||||
fun isHidden(searchable: SavableSearchable): Flow<Boolean> {
|
||||
return searchableRepository.isHidden(searchable)
|
||||
fun getVisibility(searchable: SavableSearchable): Flow<VisibilityLevel> {
|
||||
return searchableRepository.getVisibility(searchable)
|
||||
}
|
||||
|
||||
fun pinItem(searchable: SavableSearchable) {
|
||||
@@ -44,7 +45,7 @@ class FavoritesService(
|
||||
searchableRepository.update(
|
||||
searchable,
|
||||
pinned = false,
|
||||
hidden = false,
|
||||
visibility = VisibilityLevel.Default,
|
||||
weight = 0.0,
|
||||
launchCount = 0,
|
||||
)
|
||||
@@ -57,17 +58,10 @@ class FavoritesService(
|
||||
)
|
||||
}
|
||||
|
||||
fun hideItem(searchable: SavableSearchable) {
|
||||
fun setVisibility(searchable: SavableSearchable, visibility: VisibilityLevel) {
|
||||
searchableRepository.upsert(
|
||||
searchable,
|
||||
hidden = true,
|
||||
)
|
||||
}
|
||||
|
||||
fun unhideItem(searchable: SavableSearchable) {
|
||||
searchableRepository.upsert(
|
||||
searchable,
|
||||
hidden = false,
|
||||
visibility = visibility,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import de.mm20.launcher2.data.customattrs.CustomAttributesRepository
|
||||
import de.mm20.launcher2.searchable.SavableSearchableRepository
|
||||
import de.mm20.launcher2.search.SavableSearchable
|
||||
import de.mm20.launcher2.search.data.Tag
|
||||
import de.mm20.launcher2.searchable.PinnedLevel
|
||||
import de.mm20.launcher2.services.tags.TagsService
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -46,8 +47,7 @@ internal class TagsServiceImpl(
|
||||
customAttributesRepository.renameTag(tag, newName).join()
|
||||
val pinnedTags = searchableRepository.get(
|
||||
includeTypes = listOf(Tag.Domain),
|
||||
manuallySorted = true,
|
||||
automaticallySorted = true
|
||||
minPinnedLevel = PinnedLevel.AutomaticallySorted,
|
||||
).first()
|
||||
val oldTag = Tag(tag)
|
||||
if (pinnedTags.any { it.key == oldTag.key }) {
|
||||
|
||||
Reference in New Issue
Block a user