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

Commit 90f8e289 authored by George Lin's avatar George Lin Committed by Android (Google) Code Review
Browse files

Merge "Main surface should wait for the customization options data (2/3)" into main

parents 01cefbc7 5bb652fa
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
@@ -54,7 +55,8 @@ constructor(
    val selectedGridOption: Flow<GridOptionModel?> =
        gridOptions.map { gridOptions -> gridOptions?.firstOrNull { it.isCurrent } }

    val isGridCustomizationAvailable = gridOptions.filterNotNull().map { it.size > 1 }
    val isGridCustomizationAvailable =
        gridOptions.filterNotNull().map { it.size > 1 }.distinctUntilChanged()

    suspend fun applySelectedOption(gridKey: String) =
        withContext(bgDispatcher) {
+2 −0
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ import javax.inject.Singleton
@Singleton
class GridInteractor2 @Inject constructor(private val repository: GridRepository2) {

    val isGridCustomizationAvailable = repository.isGridCustomizationAvailable

    val gridOptions = repository.gridOptions

    val selectedGridOption = repository.selectedGridOption
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ object ShapeGridFloatingSheetBinder {
        lifecycleOwner: LifecycleOwner,
        backgroundDispatcher: CoroutineDispatcher,
    ) {
        val viewModel = optionsViewModel.shapeGridPickerViewModel
        val viewModel = optionsViewModel.fridPickerViewModel
        val isFloatingSheetActive = { optionsViewModel.selectedOption.value == GRID }

        val floatingSheetContainer =
+1 −2
Original line number Diff line number Diff line
@@ -332,8 +332,7 @@ constructor(private val defaultCustomizationOptionsBinder: DefaultCustomizationO
                }

                launch {
                    optionsViewModel.shapeGridPickerViewModel.selectedGridOption.collect {
                        gridOption ->
                    optionsViewModel.fridPickerViewModel.selectedGridOption.collect { gridOption ->
                        TextViewBinder.bind(optionShapeGridDescription, gridOption.text)
                        gridOption.payload?.let { optionShapeGridIcon.setImageDrawable(it) }
                    }
+38 −19
Original line number Diff line number Diff line
@@ -27,11 +27,13 @@ import com.android.customization.picker.mode.shared.util.DarkModeLifecycleUtil
import com.android.themepicker.R
import com.android.wallpaper.config.BaseFlags
import com.android.wallpaper.customization.ui.compose.ColorFloatingSheet
import com.android.wallpaper.customization.ui.viewmodel.ThemePickerCustomizationOptionsData
import com.android.wallpaper.model.Screen
import com.android.wallpaper.model.Screen.HOME_SCREEN
import com.android.wallpaper.model.Screen.LOCK_SCREEN
import com.android.wallpaper.picker.customization.ui.util.CustomizationOptionUtil
import com.android.wallpaper.picker.customization.ui.util.DefaultCustomizationOptionUtil
import com.android.wallpaper.picker.customization.ui.viewmodel.CustomizationOptionsData
import dagger.hilt.android.qualifiers.ActivityContext
import dagger.hilt.android.scopes.ActivityScoped
import javax.inject.Inject
@@ -63,14 +65,21 @@ constructor(
    }

    override fun getOptionEntries(
        customizationOptionsData: CustomizationOptionsData,
        screen: Screen,
        optionContainer: LinearLayout,
        layoutInflater: LayoutInflater,
    ): List<Pair<CustomizationOptionUtil.CustomizationOption, View>> {
        customizationOptionsData as ThemePickerCustomizationOptionsData
        val isKeyguardQuickAffordanceEnabled =
            BaseFlags.get().isKeyguardQuickAffordanceEnabled(optionContainer.context)
        val defaultOptionEntries =
            defaultCustomizationOptionUtil.getOptionEntries(screen, optionContainer, layoutInflater)
            defaultCustomizationOptionUtil.getOptionEntries(
                customizationOptionsData = customizationOptionsData,
                screen = screen,
                optionContainer = optionContainer,
                layoutInflater = layoutInflater,
            )
        return when (screen) {
            LOCK_SCREEN ->
                buildList {
@@ -157,6 +166,7 @@ constructor(
                                false,
                            )
                    )
                    if (customizationOptionsData.isGridCustomizationAvailable) {
                        add(
                            ThemePickerHomeCustomizationOption.GRID to
                                layoutInflater.inflate(
@@ -168,13 +178,20 @@ constructor(
                    }
                }
        }
    }

    override fun initFloatingSheet(
        customizationOptionsData: CustomizationOptionsData,
        bottomSheetContainer: FrameLayout,
        layoutInflater: LayoutInflater,
    ): Map<CustomizationOptionUtil.CustomizationOption, View> {
        customizationOptionsData as ThemePickerCustomizationOptionsData
        val map =
            defaultCustomizationOptionUtil.initFloatingSheet(bottomSheetContainer, layoutInflater)
            defaultCustomizationOptionUtil.initFloatingSheet(
                customizationOptionsData = customizationOptionsData,
                bottomSheetContainer = bottomSheetContainer,
                layoutInflater = layoutInflater,
            )
        val isComposeRefactorEnabled = BaseFlags.get().isComposeRefactorEnabled()
        val isKeyguardQuickAffordanceEnabled =
            BaseFlags.get().isKeyguardQuickAffordanceEnabled(bottomSheetContainer.context)
@@ -226,6 +243,7 @@ constructor(
                    layoutInflater,
                ),
            )
            if (customizationOptionsData.isGridCustomizationAvailable) {
                put(
                    ThemePickerHomeCustomizationOption.GRID,
                    inflateFloatingSheet(
@@ -237,6 +255,7 @@ constructor(
                )
            }
        }
    }

    override fun createClockPreviewAndAddToParent(
        parentView: ViewGroup,
Loading