From d4cf895481065d082ed84026aa196d8cad084c46 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Mon, 17 Apr 2023 18:57:15 +0200 Subject: [PATCH] Add debug preference to rebuild icon pack cache --- .../launcher2/ui/settings/debug/DebugSettingsScreen.kt | 6 ++++++ .../launcher2/ui/settings/debug/DebugSettingsScreenVM.kt | 6 ++++++ core/i18n/src/main/res/values/strings.xml | 2 ++ .../main/java/de/mm20/launcher2/icons/IconPackManager.kt | 4 ++-- .../src/main/java/de/mm20/launcher2/icons/IconService.kt | 7 +++++++ 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreen.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreen.kt index 17879368..d7c6fe02 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreen.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreen.kt @@ -56,6 +56,12 @@ fun DebugSettingsScreen() { ).show() } }) + Preference( + title = stringResource(R.string.preference_debug_reinstall_iconpacks), + summary = stringResource(R.string.preference_debug_reinstall_iconpacks_summary), + onClick = { + viewModel.reinstallIconPacks() + }) } } } diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreenVM.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreenVM.kt index e4c67ac1..09b72802 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreenVM.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/debug/DebugSettingsScreenVM.kt @@ -2,6 +2,7 @@ package de.mm20.launcher2.ui.settings.debug import androidx.lifecycle.ViewModel import de.mm20.launcher2.data.customattrs.CustomAttributesRepository +import de.mm20.launcher2.icons.IconService import de.mm20.launcher2.searchable.SearchableRepository import org.koin.core.component.KoinComponent import org.koin.core.component.inject @@ -10,9 +11,14 @@ class DebugSettingsScreenVM: ViewModel(), KoinComponent { private val searchableRepository: SearchableRepository by inject() private val customAttributesRepository: CustomAttributesRepository by inject() + private val iconService: IconService by inject() suspend fun cleanUpDatabase(): Int { var removed = searchableRepository.cleanupDatabase() removed += customAttributesRepository.cleanupDatabase() return removed } + + fun reinstallIconPacks() { + iconService.reinstallAllIconPacks() + } } \ No newline at end of file diff --git a/core/i18n/src/main/res/values/strings.xml b/core/i18n/src/main/res/values/strings.xml index 4c8da071..84e1d717 100644 --- a/core/i18n/src/main/res/values/strings.xml +++ b/core/i18n/src/main/res/values/strings.xml @@ -458,6 +458,8 @@ Tools Clean up database Remove broken and unused entries from the launcher database + Reinstall icon packs + Clear and rebuild the icon pack cache %1$d entry has been removed. %1$d entries have been removed. diff --git a/services/icons/src/main/java/de/mm20/launcher2/icons/IconPackManager.kt b/services/icons/src/main/java/de/mm20/launcher2/icons/IconPackManager.kt index c842acb9..5d1532aa 100644 --- a/services/icons/src/main/java/de/mm20/launcher2/icons/IconPackManager.kt +++ b/services/icons/src/main/java/de/mm20/launcher2/icons/IconPackManager.kt @@ -50,7 +50,7 @@ class IconPackManager( } private var updateIconPacksMutex = Mutex() - suspend fun updateIconPacks(): Boolean { + suspend fun updateIconPacks(forceReinstall: Boolean = false): Boolean { var iconsHaveBeenUpdated = false updateIconPacksMutex.lock() val installers = listOf( @@ -61,7 +61,7 @@ class IconPackManager( for (installer in installers) { val iconPacks = installer.getInstalledIconPacks() for (pack in iconPacks) { - if (!installer.isInstalledAndUpToDate(pack)) { + if (forceReinstall || !installer.isInstalledAndUpToDate(pack)) { installer.install(pack) iconsHaveBeenUpdated = true } else { diff --git a/services/icons/src/main/java/de/mm20/launcher2/icons/IconService.kt b/services/icons/src/main/java/de/mm20/launcher2/icons/IconService.kt index 833dbe04..1a720d4a 100644 --- a/services/icons/src/main/java/de/mm20/launcher2/icons/IconService.kt +++ b/services/icons/src/main/java/de/mm20/launcher2/icons/IconService.kt @@ -228,6 +228,13 @@ class IconService( } } + fun reinstallAllIconPacks() { + scope.launch { + iconPackManager.updateIconPacks(forceReinstall = true) + iconPacksUpdated.tryEmit(Unit) + } + } + fun getInstalledIconPacks(): Flow> { return iconPackManager.getInstalledIconPacks() }