Add hidden item badges (but don't enable them)
This commit is contained in:
@@ -50,4 +50,5 @@ dependencies {
|
||||
implementation(project(":core:preferences"))
|
||||
implementation(project(":core:base"))
|
||||
implementation(project(":data:files"))
|
||||
implementation(project(":data:searchable"))
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import android.content.Context
|
||||
import de.mm20.launcher2.badges.providers.AppShortcutBadgeProvider
|
||||
import de.mm20.launcher2.badges.providers.BadgeProvider
|
||||
import de.mm20.launcher2.badges.providers.CloudBadgeProvider
|
||||
import de.mm20.launcher2.badges.providers.HiddenItemBadgeProvider
|
||||
import de.mm20.launcher2.badges.providers.NotificationBadgeProvider
|
||||
import de.mm20.launcher2.badges.providers.PluginBadgeProvider
|
||||
import de.mm20.launcher2.badges.providers.SuspendedAppsBadgeProvider
|
||||
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package de.mm20.launcher2.badges.providers
|
||||
|
||||
import de.mm20.launcher2.badges.Badge
|
||||
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 kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.SharingStarted
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.shareIn
|
||||
import org.koin.core.component.KoinComponent
|
||||
import org.koin.core.component.inject
|
||||
|
||||
class HiddenItemBadgeProvider(
|
||||
) : BadgeProvider, KoinComponent {
|
||||
|
||||
private val searchableRepository: SavableSearchableRepository by inject()
|
||||
|
||||
private val scope = CoroutineScope(Job() + Dispatchers.Default)
|
||||
|
||||
private val hiddenItemKeys = searchableRepository.getKeys(
|
||||
hidden = true,
|
||||
limit = 9999,
|
||||
).shareIn(scope, SharingStarted.WhileSubscribed(), 1)
|
||||
|
||||
override fun getBadge(searchable: Searchable): Flow<Badge?> {
|
||||
if (searchable !is SavableSearchable) return flowOf(null)
|
||||
return hiddenItemKeys.map { keys ->
|
||||
if (searchable.key in keys) {
|
||||
Badge(
|
||||
iconRes = R.drawable.ic_badge_hidden
|
||||
)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user