Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e41f7cc8 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Add identityHashCode to App List item key

To make sure the item is also refreshed when record data updated.

Bug: 235727273
Test: Manually with Settings
Change-Id: Ib8d4c31054a5fd2d35a99be3d8f7ab20b48096b8
parent 020ca899
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import com.android.settingslib.spaprivileged.model.app.AppListModel
import com.android.settingslib.spaprivileged.model.app.AppListViewModel
import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.IAppListViewModel
import com.android.settingslib.spaprivileged.model.app.userId
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow

@@ -135,7 +136,7 @@ private fun <T : AppRecord> AppListModel<T>.AppListWidget(
                header()
            }

            items(count = list.size, key = { option to list[it].record.app.packageName }) {
            items(count = list.size, key = { list[it].record.itemKey(option) }) {
                remember(list) { getGroupTitleIfFirst(option, list, it) }
                    ?.let { group -> CategoryTitle(title = group) }

@@ -149,6 +150,9 @@ private fun <T : AppRecord> AppListModel<T>.AppListWidget(
    }
}

private fun <T : AppRecord> T.itemKey(option: Int) =
    listOf(option, app.packageName, app.userId, System.identityHashCode(this))

/** Returns group title if this is the first item of the group. */
private fun <T : AppRecord> AppListModel<T>.getGroupTitleIfFirst(
    option: Int,