Rename IconRepository -> IconService

This commit is contained in:
MM20 2023-04-10 23:01:12 +02:00
parent e5a6043fe6
commit 68eece53f7
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
10 changed files with 33 additions and 41 deletions

View File

@ -5,10 +5,9 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import de.mm20.launcher2.icons.IconRepository import de.mm20.launcher2.icons.IconService
import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.icons.LauncherIcon
import de.mm20.launcher2.preferences.LauncherDataStore import de.mm20.launcher2.preferences.LauncherDataStore
import de.mm20.launcher2.preferences.Settings
import de.mm20.launcher2.search.SavableSearchable import de.mm20.launcher2.search.SavableSearchable
import de.mm20.launcher2.search.SearchService import de.mm20.launcher2.search.SearchService
import de.mm20.launcher2.search.toList import de.mm20.launcher2.search.toList
@ -17,10 +16,8 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.koin.androidx.compose.inject
import org.koin.core.component.KoinComponent import org.koin.core.component.KoinComponent
import org.koin.core.component.inject import org.koin.core.component.inject
@ -28,7 +25,7 @@ class SearchablePickerVM: ViewModel(), KoinComponent {
private val dataStore: LauncherDataStore by inject() private val dataStore: LauncherDataStore by inject()
private val searchService: SearchService by inject() private val searchService: SearchService by inject()
private val iconRepository: IconRepository by inject() private val iconService: IconService by inject()
var searchQuery by mutableStateOf("") var searchQuery by mutableStateOf("")
@ -61,6 +58,6 @@ class SearchablePickerVM: ViewModel(), KoinComponent {
} }
fun getIcon(searchable: SavableSearchable, size: Int): Flow<LauncherIcon> { fun getIcon(searchable: SavableSearchable, size: Int): Flow<LauncherIcon> {
return iconRepository.getIcon(searchable, size) return iconService.getIcon(searchable, size)
} }
} }

View File

@ -7,7 +7,7 @@ import androidx.core.app.ActivityOptionsCompat
import de.mm20.launcher2.badges.BadgeService import de.mm20.launcher2.badges.BadgeService
import de.mm20.launcher2.data.customattrs.CustomAttributesRepository import de.mm20.launcher2.data.customattrs.CustomAttributesRepository
import de.mm20.launcher2.searchable.SearchableRepository import de.mm20.launcher2.searchable.SearchableRepository
import de.mm20.launcher2.icons.IconRepository import de.mm20.launcher2.icons.IconService
import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.icons.LauncherIcon
import de.mm20.launcher2.search.SavableSearchable import de.mm20.launcher2.search.SavableSearchable
import de.mm20.launcher2.search.data.AppShortcut import de.mm20.launcher2.search.data.AppShortcut
@ -23,7 +23,7 @@ abstract class SearchableItemVM(
protected val favoritesService: FavoritesService by inject() protected val favoritesService: FavoritesService by inject()
protected val searchableRepository: SearchableRepository by inject() protected val searchableRepository: SearchableRepository by inject()
protected val badgeService: BadgeService by inject() protected val badgeService: BadgeService by inject()
protected val iconRepository: IconRepository by inject() protected val iconService: IconService by inject()
protected val customAttributesRepository: CustomAttributesRepository by inject() protected val customAttributesRepository: CustomAttributesRepository by inject()
val isPinned = searchableRepository.isPinned(searchable) val isPinned = searchableRepository.isPinned(searchable)
@ -47,7 +47,7 @@ abstract class SearchableItemVM(
val badge = badgeService.getBadge(searchable) val badge = badgeService.getBadge(searchable)
fun getIcon(size: Int): Flow<LauncherIcon> { fun getIcon(size: Int): Flow<LauncherIcon> {
return iconRepository.getIcon(searchable, size) return iconService.getIcon(searchable, size)
} }
fun getTags(): Flow<List<String>> { fun getTags(): Flow<List<String>> {

View File

@ -6,7 +6,7 @@ import de.mm20.launcher2.data.customattrs.CustomAttributesRepository
import de.mm20.launcher2.data.customattrs.CustomIcon import de.mm20.launcher2.data.customattrs.CustomIcon
import de.mm20.launcher2.icons.CustomIconWithPreview import de.mm20.launcher2.icons.CustomIconWithPreview
import de.mm20.launcher2.icons.IconPack import de.mm20.launcher2.icons.IconPack
import de.mm20.launcher2.icons.IconRepository import de.mm20.launcher2.icons.IconService
import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.icons.LauncherIcon
import de.mm20.launcher2.search.SavableSearchable import de.mm20.launcher2.search.SavableSearchable
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
@ -14,7 +14,6 @@ import kotlinx.coroutines.cancelAndJoin
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.koin.core.component.KoinComponent import org.koin.core.component.KoinComponent
@ -24,17 +23,17 @@ import kotlin.coroutines.coroutineContext
class CustomizeSearchableSheetVM( class CustomizeSearchableSheetVM(
private val searchable: SavableSearchable private val searchable: SavableSearchable
) : KoinComponent { ) : KoinComponent {
private val iconRepository: IconRepository by inject() private val iconService: IconService by inject()
private val customAttributesRepository: CustomAttributesRepository by inject() private val customAttributesRepository: CustomAttributesRepository by inject()
val isIconPickerOpen = mutableStateOf(false) val isIconPickerOpen = mutableStateOf(false)
fun getIcon(size: Int): Flow<LauncherIcon> { fun getIcon(size: Int): Flow<LauncherIcon> {
return iconRepository.getIcon(searchable, size) return iconService.getIcon(searchable, size)
} }
fun getIconSuggestions(size: Int) = liveData { fun getIconSuggestions(size: Int) = liveData {
emit(iconRepository.getCustomIconSuggestions(searchable, size)) emit(iconService.getCustomIconSuggestions(searchable, size))
} }
fun openIconPicker() { fun openIconPicker() {
@ -46,18 +45,18 @@ class CustomizeSearchableSheetVM(
} }
fun pickIcon(icon: CustomIcon?) { fun pickIcon(icon: CustomIcon?) {
iconRepository.setCustomIcon(searchable, icon) iconService.setCustomIcon(searchable, icon)
closeIconPicker() closeIconPicker()
} }
fun getDefaultIcon(size: Int) = liveData { fun getDefaultIcon(size: Int) = liveData {
emit(iconRepository.getUncustomizedDefaultIcon(searchable, size)) emit(iconService.getUncustomizedDefaultIcon(searchable, size))
} }
val iconSearchResults = mutableStateOf(emptyList<CustomIconWithPreview>()) val iconSearchResults = mutableStateOf(emptyList<CustomIconWithPreview>())
val isSearchingIcons = mutableStateOf(false) val isSearchingIcons = mutableStateOf(false)
val installedIconPacks = iconRepository.getInstalledIconPacks() val installedIconPacks = iconService.getInstalledIconPacks()
private var debounceSearchJob: Job? = null private var debounceSearchJob: Job? = null
suspend fun searchIcon(query: String, iconPack: IconPack?) { suspend fun searchIcon(query: String, iconPack: IconPack?) {
@ -72,7 +71,7 @@ class CustomizeSearchableSheetVM(
delay(500) delay(500)
isSearchingIcons.value = true isSearchingIcons.value = true
iconSearchResults.value = emptyList() iconSearchResults.value = emptyList()
iconSearchResults.value = iconRepository.searchCustomIcons(query, iconPack) iconSearchResults.value = iconService.searchCustomIcons(query, iconPack)
isSearchingIcons.value = false isSearchingIcons.value = false
} }
} }

View File

@ -13,7 +13,7 @@ import de.mm20.launcher2.appshortcuts.AppShortcutRepository
import de.mm20.launcher2.badges.Badge import de.mm20.launcher2.badges.Badge
import de.mm20.launcher2.badges.BadgeService import de.mm20.launcher2.badges.BadgeService
import de.mm20.launcher2.data.customattrs.CustomAttributesRepository import de.mm20.launcher2.data.customattrs.CustomAttributesRepository
import de.mm20.launcher2.icons.IconRepository import de.mm20.launcher2.icons.IconService
import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.icons.LauncherIcon
import de.mm20.launcher2.ktx.normalize import de.mm20.launcher2.ktx.normalize
import de.mm20.launcher2.permissions.PermissionGroup import de.mm20.launcher2.permissions.PermissionGroup
@ -36,7 +36,7 @@ class EditFavoritesSheetVM : ViewModel(), KoinComponent {
private val favoritesService: FavoritesService by inject() private val favoritesService: FavoritesService by inject()
private val shortcutRepository: AppShortcutRepository by inject() private val shortcutRepository: AppShortcutRepository by inject()
private val iconRepository: IconRepository by inject() private val iconService: IconService by inject()
private val badgeService: BadgeService by inject() private val badgeService: BadgeService by inject()
private val customAttributesRepository: CustomAttributesRepository by inject() private val customAttributesRepository: CustomAttributesRepository by inject()
private val permissionsManager: PermissionsManager by inject() private val permissionsManager: PermissionsManager by inject()
@ -181,7 +181,7 @@ class EditFavoritesSheetVM : ViewModel(), KoinComponent {
} }
fun getIcon(searchable: SavableSearchable, size: Int): Flow<LauncherIcon?> { fun getIcon(searchable: SavableSearchable, size: Int): Flow<LauncherIcon?> {
return iconRepository.getIcon(searchable, size) return iconService.getIcon(searchable, size)
} }
fun getBadge(searchable: Searchable): Flow<Badge?> { fun getBadge(searchable: Searchable): Flow<Badge?> {

View File

@ -9,7 +9,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData import androidx.lifecycle.asLiveData
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import de.mm20.launcher2.icons.IconPack import de.mm20.launcher2.icons.IconPack
import de.mm20.launcher2.icons.IconRepository import de.mm20.launcher2.icons.IconService
import de.mm20.launcher2.ktx.isAtLeastApiLevel import de.mm20.launcher2.ktx.isAtLeastApiLevel
import de.mm20.launcher2.preferences.LauncherDataStore import de.mm20.launcher2.preferences.LauncherDataStore
import de.mm20.launcher2.preferences.Settings import de.mm20.launcher2.preferences.Settings
@ -20,9 +20,7 @@ import de.mm20.launcher2.preferences.Settings.SearchBarSettings
import de.mm20.launcher2.preferences.Settings.SearchBarSettings.SearchBarColors import de.mm20.launcher2.preferences.Settings.SearchBarSettings.SearchBarColors
import de.mm20.launcher2.preferences.Settings.SystemBarsSettings import de.mm20.launcher2.preferences.Settings.SystemBarsSettings
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.shareIn
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.koin.core.component.KoinComponent import org.koin.core.component.KoinComponent
import org.koin.core.component.inject import org.koin.core.component.inject
@ -30,7 +28,7 @@ import org.koin.core.component.inject
class AppearanceSettingsScreenVM : ViewModel(), KoinComponent { class AppearanceSettingsScreenVM : ViewModel(), KoinComponent {
private val dataStore: LauncherDataStore by inject() private val dataStore: LauncherDataStore by inject()
private val iconRepository: IconRepository by inject() private val iconService: IconService by inject()
val theme = dataStore.data.map { it.appearance.theme }.asLiveData() val theme = dataStore.data.map { it.appearance.theme }.asLiveData()
fun setTheme(theme: Theme) { fun setTheme(theme: Theme) {
@ -200,7 +198,7 @@ class AppearanceSettingsScreenVM : ViewModel(), KoinComponent {
} }
} }
val installedIconPacks: Flow<List<IconPack>> = iconRepository.getInstalledIconPacks().map { val installedIconPacks: Flow<List<IconPack>> = iconService.getInstalledIconPacks().map {
listOf( listOf(
IconPack( IconPack(
name = "System", name = "System",

View File

@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData import androidx.lifecycle.asLiveData
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import de.mm20.launcher2.searchable.SearchableRepository import de.mm20.launcher2.searchable.SearchableRepository
import de.mm20.launcher2.icons.IconRepository import de.mm20.launcher2.icons.IconService
import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.icons.LauncherIcon
import de.mm20.launcher2.permissions.PermissionGroup import de.mm20.launcher2.permissions.PermissionGroup
import de.mm20.launcher2.permissions.PermissionsManager import de.mm20.launcher2.permissions.PermissionsManager
@ -25,7 +25,7 @@ class GestureSettingsScreenVM : ViewModel(), KoinComponent {
private val dataStore: LauncherDataStore by inject() private val dataStore: LauncherDataStore by inject()
private val permissionsManager: PermissionsManager by inject() private val permissionsManager: PermissionsManager by inject()
private val searchableRepository: SearchableRepository by inject() private val searchableRepository: SearchableRepository by inject()
private val iconRepository: IconRepository by inject() private val iconService: IconService by inject()
val hasPermission = permissionsManager.hasPermission(PermissionGroup.Accessibility).asLiveData() val hasPermission = permissionsManager.hasPermission(PermissionGroup.Accessibility).asLiveData()
@ -190,6 +190,6 @@ class GestureSettingsScreenVM : ViewModel(), KoinComponent {
fun getIcon(searchable: SavableSearchable?, size: Int): Flow<LauncherIcon> { fun getIcon(searchable: SavableSearchable?, size: Int): Flow<LauncherIcon> {
if (searchable == null) return emptyFlow() if (searchable == null) return emptyFlow()
return iconRepository.getIcon(searchable, size) return iconService.getIcon(searchable, size)
} }
} }

View File

@ -11,7 +11,7 @@ import androidx.lifecycle.asLiveData
import androidx.lifecycle.liveData import androidx.lifecycle.liveData
import de.mm20.launcher2.applications.AppRepository import de.mm20.launcher2.applications.AppRepository
import de.mm20.launcher2.searchable.SearchableRepository import de.mm20.launcher2.searchable.SearchableRepository
import de.mm20.launcher2.icons.IconRepository import de.mm20.launcher2.icons.IconService
import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.icons.LauncherIcon
import de.mm20.launcher2.ktx.isAtLeastApiLevel import de.mm20.launcher2.ktx.isAtLeastApiLevel
import de.mm20.launcher2.search.SavableSearchable import de.mm20.launcher2.search.SavableSearchable
@ -27,7 +27,7 @@ import org.koin.core.component.inject
class HiddenItemsSettingsScreenVM : ViewModel(), KoinComponent { class HiddenItemsSettingsScreenVM : ViewModel(), KoinComponent {
private val appRepository: AppRepository by inject() private val appRepository: AppRepository by inject()
private val searchableRepository: SearchableRepository by inject() private val searchableRepository: SearchableRepository by inject()
private val iconRepository: IconRepository by inject() private val iconService: IconService by inject()
val allApps = appRepository.getAllInstalledApps().map { val allApps = appRepository.getAllInstalledApps().map {
withContext(Dispatchers.Default) { it.sorted() } withContext(Dispatchers.Default) { it.sorted() }
@ -50,7 +50,7 @@ class HiddenItemsSettingsScreenVM : ViewModel(), KoinComponent {
} }
fun getIcon(searchable: SavableSearchable, size: Int): Flow<LauncherIcon> { fun getIcon(searchable: SavableSearchable, size: Int): Flow<LauncherIcon> {
return iconRepository.getIcon(searchable, size) return iconService.getIcon(searchable, size)
} }
fun launch(context: Context, searchable: SavableSearchable) { fun launch(context: Context, searchable: SavableSearchable) {

View File

@ -9,7 +9,7 @@ import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import de.mm20.launcher2.applications.AppRepository import de.mm20.launcher2.applications.AppRepository
import de.mm20.launcher2.icons.IconRepository import de.mm20.launcher2.icons.IconService
import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.icons.LauncherIcon
import de.mm20.launcher2.search.SavableSearchable import de.mm20.launcher2.search.SavableSearchable
import de.mm20.launcher2.search.SearchService import de.mm20.launcher2.search.SearchService
@ -25,7 +25,7 @@ class EditTagSheetVM : ViewModel(), KoinComponent {
private val tagService: TagsService by inject() private val tagService: TagsService by inject()
private val searchService: SearchService by inject() private val searchService: SearchService by inject()
private val iconRepository: IconRepository by inject() private val iconService: IconService by inject()
private val appRepository: AppRepository by inject() private val appRepository: AppRepository by inject()
private var oldTagName by mutableStateOf<String?>(null) private var oldTagName by mutableStateOf<String?>(null)
@ -82,7 +82,7 @@ class EditTagSheetVM : ViewModel(), KoinComponent {
} }
fun getIcon(item: SavableSearchable, size: Int): Flow<LauncherIcon> { fun getIcon(item: SavableSearchable, size: Int): Flow<LauncherIcon> {
return iconRepository.getIcon(item, size) return iconService.getIcon(item, size)
} }
fun openItemPicker() { fun openItemPicker() {

View File

@ -1,7 +1,6 @@
package de.mm20.launcher2.icons package de.mm20.launcher2.icons
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.ComponentName
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
@ -45,11 +44,10 @@ import kotlinx.coroutines.flow.channelFlow
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.internal.ChannelFlow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class IconRepository( class IconService(
val context: Context, val context: Context,
private val iconPackManager: IconPackManager, private val iconPackManager: IconPackManager,
private val dataStore: LauncherDataStore, private val dataStore: LauncherDataStore,
@ -133,9 +131,9 @@ class IconRepository(
ForceThemedIconTransformation() ForceThemedIconTransformation()
) )
this@IconRepository.placeholderProvider = placeholderProvider this@IconService.placeholderProvider = placeholderProvider
iconProviders.value = providers iconProviders.value = providers
this@IconRepository.transformations.value = transformations this@IconService.transformations.value = transformations
} }
} }
} }

View File

@ -5,5 +5,5 @@ import org.koin.dsl.module
val iconsModule = module { val iconsModule = module {
single { IconPackManager(androidContext(), get()) } single { IconPackManager(androidContext(), get()) }
single { IconRepository(androidContext(), get(), get(), get()) } single { IconService(androidContext(), get(), get(), get()) }
} }