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

Commit 4f4e04ea authored by Catherine Liang's avatar Catherine Liang
Browse files

Remove dark theme config change restart (2/3)

Flag: com.android.systemui.shared.new_customization_picker_ui
Bug: 299510645
Bug: 281095846
Test: manually verified by toggling dark theme in and out of picker
Change-Id: I208bc7fc2cb6eb72edbd12d00766f0f971008bc8
parent 6164e9d5
Loading
Loading
Loading
Loading
+4 −12
Original line number Diff line number Diff line
@@ -18,11 +18,9 @@ package com.android.customization.picker.mode.data.repository

import com.android.customization.picker.mode.shared.util.DarkModeUtil
import com.android.wallpaper.system.PowerManagerWrapper
import com.android.wallpaper.system.UiModeManagerWrapper
import javax.inject.Inject
import javax.inject.Singleton
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map

@@ -31,7 +29,7 @@ class DarkModeRepository
@Inject
constructor(
    darkModeUtil: DarkModeUtil,
    private val uiModeManager: UiModeManagerWrapper,
    private val darkModeStateRepository: DarkModeStateRepository,
    private val powerManager: PowerManagerWrapper,
) {
    private val isPowerSaveMode = MutableStateFlow(powerManager.getIsPowerSaveMode() ?: false)
@@ -43,17 +41,11 @@ constructor(
            isPowerSaveMode.map { !it }
        } else flowOf(false)

    private val _isDarkMode = MutableStateFlow(uiModeManager.getIsNightModeActivated())
    val isDarkMode = _isDarkMode.asStateFlow()
    val isDarkMode = darkModeStateRepository.isDarkMode

    fun setDarkModeActivated(isActive: Boolean) {
        uiModeManager.setNightModeActivated(isActive)
        refreshIsDarkModeActivated()
    }
    fun setIsDarkMode(isActive: Boolean) = darkModeStateRepository.setIsDarkMode(isActive)

    fun refreshIsDarkModeActivated() {
        _isDarkMode.value = uiModeManager.getIsNightModeActivated()
    }
    fun refreshIsDarkMode() = darkModeStateRepository.refreshIsDarkMode()

    fun refreshIsPowerSaveModeActivated() {
        powerManager.getIsPowerSaveMode()?.let { isPowerSaveMode.value = it }
+1 −1
Original line number Diff line number Diff line
@@ -25,5 +25,5 @@ class DarkModeInteractor @Inject constructor(private val repository: DarkModeRep
    val isEnabled = repository.isEnabled
    val isDarkMode = repository.isDarkMode

    fun setDarkModeActivated(isActive: Boolean) = repository.setDarkModeActivated(isActive)
    fun setIsDarkMode(isActive: Boolean) = repository.setIsDarkMode(isActive)
}
+0 −1
Original line number Diff line number Diff line
@@ -59,7 +59,6 @@ constructor(
            @Synchronized
            override fun onStart(owner: LifecycleOwner) {
                super.onStart(owner)
                darkModeRepository.refreshIsDarkModeActivated()
                darkModeRepository.refreshIsPowerSaveModeActivated()
                if (lifecycleOwner.lifecycle.currentState.isAtLeast(Lifecycle.State.STARTED)) {
                    activityContext.registerReceiver(
+5 −1
Original line number Diff line number Diff line
@@ -54,7 +54,11 @@ object DarkModeBinder {
                }
                launch {
                    viewModel.toggleDarkMode.collect {
                        darkModeToggle.setOnCheckedChangeListener { _, _ -> it.invoke() }
                        // Use onClickListener instead of onCheckedChangeListener to avoid the
                        // potential cycle of: system value changes->the toggle isChecked value is
                        // updated->the onCheckedChangeListener is called->the overriding value is
                        // set. The overriding value should not be set by the system, only by user.
                        darkModeToggle.setOnClickListener { _ -> it.invoke() }
                    }
                }
            }
+5 −2
Original line number Diff line number Diff line
@@ -44,14 +44,17 @@ constructor(private val interactor: DarkModeInteractor, private val logger: Them
    val toggleDarkMode =
        combine(overridingIsDarkMode, isDarkMode) { override, current ->
            // Only set override if its value is different from current, else set to null
            { _overridingIsDarkMode.value = if (override == null) !current else null }
            {
                _overridingIsDarkMode.value =
                    if (override == null || override == current) !current else null
            }
        }

    val onApply: Flow<(suspend () -> Unit)?> =
        combine(overridingIsDarkMode, isDarkMode, isEnabled) { override, current, isEnabled ->
            if (override != null && override != current && isEnabled) {
                {
                    interactor.setDarkModeActivated(override)
                    interactor.setIsDarkMode(override)
                    logger.logDarkThemeApplied(override)
                }
            } else null
Loading