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