Cache source package icons

This commit is contained in:
arkon 2020-04-03 21:39:55 -04:00
parent 9da27cc56e
commit 06c3f57f62

View file

@ -50,6 +50,8 @@ class ExtensionManager(
*/
private val installedExtensionsRelay = BehaviorRelay.create<List<Extension.Installed>>()
private val iconMap = mutableMapOf<String, Drawable>()
/**
* List of the currently installed extensions.
*/
@ -61,8 +63,10 @@ class ExtensionManager(
fun getAppIconForSource(source: Source): Drawable? {
val pkgName = installedExtensions.find { ext -> ext.sources.any { it.id == source.id } }?.pkgName
return if (pkgName != null) context.packageManager.getApplicationIcon(pkgName)
else null
if (pkgName != null) {
return iconMap[pkgName] ?: iconMap.getOrPut(pkgName) { context.packageManager.getApplicationIcon(pkgName) }
}
return null
}
/**