diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Collections.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Collections.kt index ba253368d505e..9478587f9b016 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Collections.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Collections.kt @@ -19,7 +19,23 @@ package com.android.settingslib.spa.framework.util import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.launch +/** + * Performs the given [action] on each element asynchronously. + */ +suspend inline fun Iterable.asyncForEach(crossinline action: (T) -> Unit) { + coroutineScope { + forEach { + launch { action(it) } + } + } +} + +/** + * Returns a list containing the results of asynchronously applying the given [transform] function + * to each element in the original collection. + */ suspend inline fun Iterable.asyncMap(crossinline transform: (T) -> R): List = coroutineScope { map { item -> @@ -27,6 +43,11 @@ suspend inline fun Iterable.asyncMap(crossinline transform: (T) -> R): }.awaitAll() } +/** + * Returns a list containing only elements matching the given [predicate]. + * + * The filter operation is done asynchronously. + */ suspend inline fun Iterable.asyncFilter(crossinline predicate: (T) -> Boolean): List = asyncMap { item -> item to predicate(item) } .filter { it.second } diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/TwoTargetPreference.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/TwoTargetPreference.kt index 507421bf4a975..77ea3c5448e4e 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/TwoTargetPreference.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/TwoTargetPreference.kt @@ -67,6 +67,6 @@ private fun PreferenceDivider() { Modifier .padding(horizontal = SettingsDimension.itemPaddingEnd) .size(width = 1.dp, height = SettingsDimension.itemDividerHeight) - .background(color = MaterialTheme.colorScheme.onSurface.copy(SettingsOpacity.Disabled)) + .background(color = MaterialTheme.colorScheme.onSurface.copy(SettingsOpacity.Divider)) ) }