ICON_PACK - procedural icon reloading starts from home icons first regardless of profile

This commit is contained in:
Alex Sim committed 2026-09-22 20:23:23 +02:00
1 parent 5881d4e451
commit f7213e8714
1 file changed
+11 -10
+11 -10
View File
@@ -19,19 +19,20 @@ object IconReloader {
val launcherApps = app.getSystemService(LauncherApps::class.java)!!
// Only queues tasks: anything slow here delays every icon
model.enqueueModelUpdateTask { _, dataModel, _ ->
// Sort by home screen packages first, everything else later
// Sort by home screen packages first across all profiles, everything else later
val onHome = synchronized(dataModel) {
dataModel.itemsIdMap.mapNotNullTo(HashSet()) { it.targetPackage }
dataModel.itemsIdMap.mapNotNullTo(HashSet()) { i -> i.targetPackage?.let { it to i.user } }
}
UserCache.INSTANCE.get(app).userProfiles.forEach { user ->
val users = UserCache.INSTANCE.get(app).userProfiles
users.flatMap { user ->
launcherApps.getActivityList(null, user)
.mapTo(LinkedHashSet()) { it.componentName.packageName }
.sortedBy { it !in onHome }
.forEach { pkg ->
model.enqueueModelUpdateTask(
PackageUpdatedTask(PackageUpdatedTask.OP_UPDATE, user, pkg))
}
// Pinned shortcut badges, last so they get the new icons
.mapTo(LinkedHashSet()) { it.componentName.packageName to user }
}.sortedBy { it !in onHome }.forEach { (pkg, user) ->
model.enqueueModelUpdateTask(
PackageUpdatedTask(PackageUpdatedTask.OP_UPDATE, user, pkg))
}
// Pinned shortcut badges, last so they get the new icons
users.forEach { user ->
model.enqueueModelUpdateTask { controller, data, apps ->
ShortcutRequest(app, user).query(ShortcutRequest.PINNED)
.groupBy { it.`package` }