diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Flows.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Flows.kt index d801840565edc..97e3ac2147ca0 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Flows.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/Flows.kt @@ -26,6 +26,13 @@ import kotlinx.coroutines.flow.distinctUntilChangedBy import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.map +/** + * Returns a [Flow] whose values are a list which containing the results of applying the given + * [transform] function to each element in the original flow's list. + */ +inline fun Flow>.mapItem(crossinline transform: (T) -> R): Flow> = + map { list -> list.map(transform) } + /** * Returns a [Flow] whose values are a list which containing the results of asynchronously applying * the given [transform] function to each element in the original flow's list. diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListModel.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListModel.kt index a7122d0eb03ad..69999089b280b 100644 --- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListModel.kt +++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListModel.kt @@ -33,7 +33,8 @@ interface AppListModel { * * @return the [AppRecord] list which will be displayed. */ - fun filter(userIdFlow: Flow, option: Int, recordListFlow: Flow>): Flow> + fun filter(userIdFlow: Flow, option: Int, recordListFlow: Flow>): Flow> = + recordListFlow /** * This function is called when the App List's loading is finished and displayed to the user. @@ -67,5 +68,5 @@ interface AppListModel { * @return null if no summary should be displayed. */ @Composable - fun getSummary(option: Int, record: T): State? + fun getSummary(option: Int, record: T): State? = null } diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListViewModelTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListViewModelTest.kt index 65c547a97fd3b..b9c875ba803a2 100644 --- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListViewModelTest.kt +++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListViewModelTest.kt @@ -21,7 +21,7 @@ import android.content.pm.ApplicationInfo import androidx.compose.runtime.Composable import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settingslib.spa.framework.compose.stateOf -import com.android.settingslib.spa.framework.util.asyncMapItem +import com.android.settingslib.spa.framework.util.mapItem import com.android.settingslib.spa.testutils.waitUntil import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -116,16 +116,7 @@ private class TestAppListModel : AppListModel { var onFirstLoadedCalled = false override fun transform(userIdFlow: Flow, appListFlow: Flow>) = - appListFlow.asyncMapItem { TestAppRecord(it) } - - @Composable - override fun getSummary(option: Int, record: TestAppRecord) = null - - override fun filter( - userIdFlow: Flow, - option: Int, - recordListFlow: Flow>, - ) = recordListFlow + appListFlow.mapItem(::TestAppRecord) override suspend fun onFirstLoaded(recordList: List) { onFirstLoadedCalled = true diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/tests/testutils/TestAppListModel.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/tests/testutils/TestAppListModel.kt index d5564877f6815..ada4016bea138 100644 --- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/tests/testutils/TestAppListModel.kt +++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/tests/testutils/TestAppListModel.kt @@ -17,8 +17,7 @@ package com.android.settingslib.spaprivileged.tests.testutils import android.content.pm.ApplicationInfo -import androidx.compose.runtime.Composable -import com.android.settingslib.spa.framework.util.asyncMapItem +import com.android.settingslib.spa.framework.util.mapItem import com.android.settingslib.spaprivileged.model.app.AppListModel import com.android.settingslib.spaprivileged.model.app.AppRecord import kotlinx.coroutines.flow.Flow @@ -35,16 +34,7 @@ class TestAppListModel( override fun getSpinnerOptions() = options override fun transform(userIdFlow: Flow, appListFlow: Flow>) = - appListFlow.asyncMapItem { TestAppRecord(it) } - - @Composable - override fun getSummary(option: Int, record: TestAppRecord) = null - - override fun filter( - userIdFlow: Flow, - option: Int, - recordListFlow: Flow>, - ) = recordListFlow + appListFlow.mapItem(::TestAppRecord) override fun getGroupTitle(option: Int, record: TestAppRecord) = if (enableGrouping) record.group else null