Merge "Make dndMode not lazy" into main
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt
index 44e6b4d..029a2f9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt
@@ -58,7 +58,9 @@
private val dispatcher = kosmos.testDispatcher
private val zenModeRepository = kosmos.fakeZenModeRepository
- private val underTest = ModesTileDataInteractor(context, kosmos.zenModeInteractor, dispatcher)
+ private val underTest by lazy {
+ ModesTileDataInteractor(context, kosmos.zenModeInteractor, dispatcher)
+ }
@Before
fun setUp() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt
index 3d5d1ed..9a42f5b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt
@@ -54,7 +54,7 @@
private val activeNotificationListRepository = kosmos.activeNotificationListRepository
private val fakeSecureSettingsRepository = kosmos.fakeSecureSettingsRepository
- private val underTest = kosmos.emptyShadeViewModel
+ private val underTest by lazy { kosmos.emptyShadeViewModel }
companion object {
@JvmStatic
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt
index 7c47264..ff1ffcc 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt
@@ -57,7 +57,7 @@
private val settingsRepository = kosmos.secureSettingsRepository
private val deviceProvisioningRepository = kosmos.fakeDeviceProvisioningRepository
- private val underTest = kosmos.zenModeInteractor
+ private val underTest by lazy { kosmos.zenModeInteractor }
@Test
fun isZenAvailable_off() =
@@ -176,13 +176,13 @@
@Test
fun shouldAskForZenDuration_changesWithSetting() =
kosmos.runTest {
- val manualDnd = TestModeBuilder().makeManualDnd().setActive(true).build()
+ val manualDnd by collectLastValue(underTest.dndMode)
settingsRepository.setInt(ZEN_DURATION, ZEN_DURATION_FOREVER)
- assertThat(underTest.shouldAskForZenDuration(manualDnd)).isFalse()
+ assertThat(underTest.shouldAskForZenDuration(manualDnd!!)).isFalse()
settingsRepository.setInt(ZEN_DURATION, ZEN_DURATION_PROMPT)
- assertThat(underTest.shouldAskForZenDuration(manualDnd)).isTrue()
+ assertThat(underTest.shouldAskForZenDuration(manualDnd!!)).isTrue()
}
@Test
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractor.kt
index fdc2d8d..5fa15b8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractor.kt
@@ -43,6 +43,7 @@
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
@@ -123,12 +124,20 @@
* explicitly wants a shortcut to DND). Please prefer using [modes] or [activeModes] in all
* other scenarios.
*/
- val dndMode: StateFlow<ZenMode?> by lazy {
- ModesUi.assertInNewMode()
- zenModeRepository.modes
- .map { modes -> modes.singleOrNull { it.isManualDnd } }
- .stateIn(scope = backgroundScope, started = SharingStarted.Eagerly, initialValue = null)
- }
+ val dndMode: StateFlow<ZenMode?> =
+ if (ModesUi.isEnabled)
+ zenModeRepository.modes
+ .map { modes -> modes.singleOrNull { it.isManualDnd } }
+ .stateIn(
+ scope = backgroundScope,
+ started = SharingStarted.Eagerly,
+ initialValue = null,
+ )
+ else MutableStateFlow<ZenMode?>(null)
+ get() {
+ ModesUi.assertInNewMode()
+ return field
+ }
/** Flow returning the currently active mode(s), if any. */
val activeModes: Flow<ActiveZenModes> =