diff options
Diffstat (limited to 'src/com/android/customization/picker/color/data/repository')
3 files changed, 20 insertions, 1 deletions
diff --git a/src/com/android/customization/picker/color/data/repository/ColorPickerRepository.kt b/src/com/android/customization/picker/color/data/repository/ColorPickerRepository.kt index 7cf9fd03..fccaa658 100644 --- a/src/com/android/customization/picker/color/data/repository/ColorPickerRepository.kt +++ b/src/com/android/customization/picker/color/data/repository/ColorPickerRepository.kt @@ -19,12 +19,15 @@ package com.android.customization.picker.color.data.repository import com.android.customization.picker.color.shared.model.ColorOptionModel import com.android.customization.picker.color.shared.model.ColorType import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.StateFlow /** * Abstracts access to application state related to functionality for selecting, picking, or setting * system color. */ interface ColorPickerRepository { + /** Whether the system color is in the process of being updated */ + val isApplyingSystemColor: StateFlow<Boolean> /** List of wallpaper and preset color options on the device, categorized by Color Type */ val colorOptions: Flow<Map<ColorType, List<ColorOptionModel>>> diff --git a/src/com/android/customization/picker/color/data/repository/ColorPickerRepositoryImpl.kt b/src/com/android/customization/picker/color/data/repository/ColorPickerRepositoryImpl.kt index 41ef3a57..6540ce06 100644 --- a/src/com/android/customization/picker/color/data/repository/ColorPickerRepositoryImpl.kt +++ b/src/com/android/customization/picker/color/data/repository/ColorPickerRepositoryImpl.kt @@ -27,7 +27,9 @@ import com.android.systemui.monet.Style import com.android.wallpaper.model.WallpaperColorsModel import com.android.wallpaper.model.WallpaperColorsViewModel import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.suspendCancellableCoroutine @@ -43,7 +45,13 @@ class ColorPickerRepositoryImpl( wallpaperColorsViewModel.homeWallpaperColors private val lockWallpaperColors: StateFlow<WallpaperColorsModel?> = wallpaperColorsViewModel.lockWallpaperColors + private var selectedColorOption: MutableStateFlow<ColorOptionModel> = + MutableStateFlow(getCurrentColorOption()) + private val _isApplyingSystemColor = MutableStateFlow(false) + override val isApplyingSystemColor = _isApplyingSystemColor.asStateFlow() + + // TODO (b/299510645): update color options on selected option change after restart is disabled override val colorOptions: Flow<Map<ColorType, List<ColorOptionModel>>> = combine(homeWallpaperColors, lockWallpaperColors) { homeColors, lockColors -> homeColors to lockColors @@ -109,17 +117,21 @@ class ColorPickerRepositoryImpl( } } - override suspend fun select(colorOptionModel: ColorOptionModel) = + override suspend fun select(colorOptionModel: ColorOptionModel) { + _isApplyingSystemColor.value = true suspendCancellableCoroutine { continuation -> colorManager.apply( colorOptionModel.colorOption, object : CustomizationManager.Callback { override fun onSuccess() { + _isApplyingSystemColor.value = false + selectedColorOption.value = colorOptionModel continuation.resumeWith(Result.success(Unit)) } override fun onError(throwable: Throwable?) { Log.w(TAG, "Apply theme with error", throwable) + _isApplyingSystemColor.value = false continuation.resumeWith( Result.failure(throwable ?: Throwable("Error loading theme bundles")) ) @@ -127,6 +139,7 @@ class ColorPickerRepositoryImpl( } ) } + } override fun getCurrentColorOption(): ColorOptionModel { val overlays = colorManager.currentOverlays diff --git a/src/com/android/customization/picker/color/data/repository/FakeColorPickerRepository.kt b/src/com/android/customization/picker/color/data/repository/FakeColorPickerRepository.kt index 714129df..bb2ef9d3 100644 --- a/src/com/android/customization/picker/color/data/repository/FakeColorPickerRepository.kt +++ b/src/com/android/customization/picker/color/data/repository/FakeColorPickerRepository.kt @@ -29,6 +29,9 @@ import kotlinx.coroutines.flow.asStateFlow class FakeColorPickerRepository(private val context: Context) : ColorPickerRepository { + private val _isApplyingSystemColor = MutableStateFlow(false) + override val isApplyingSystemColor = _isApplyingSystemColor.asStateFlow() + private lateinit var selectedColorOption: ColorOptionModel private val _colorOptions = |