Add debug preference to rebuild icon pack cache
This commit is contained in:
parent
d3e1fb2767
commit
d4cf895481
@ -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()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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()
|
||||
}
|
||||
}
|
||||
@ -458,6 +458,8 @@
|
||||
<string name="preference_category_debug_tools">Tools</string>
|
||||
<string name="preference_debug_cleanup_database">Clean up database</string>
|
||||
<string name="preference_debug_cleanup_database_summary">Remove broken and unused entries from the launcher database</string>
|
||||
<string name="preference_debug_reinstall_iconpacks">Reinstall icon packs</string>
|
||||
<string name="preference_debug_reinstall_iconpacks_summary">Clear and rebuild the icon pack cache</string>
|
||||
<plurals name="debug_cleanup_database_result">
|
||||
<item quantity="one">%1$d entry has been removed.</item>
|
||||
<item quantity="other">%1$d entries have been removed.</item>
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -228,6 +228,13 @@ class IconService(
|
||||
}
|
||||
}
|
||||
|
||||
fun reinstallAllIconPacks() {
|
||||
scope.launch {
|
||||
iconPackManager.updateIconPacks(forceReinstall = true)
|
||||
iconPacksUpdated.tryEmit(Unit)
|
||||
}
|
||||
}
|
||||
|
||||
fun getInstalledIconPacks(): Flow<List<IconPack>> {
|
||||
return iconPackManager.getInstalledIconPacks()
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user