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

Commit fa579dfd authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Open duration dialog from the main thread" into main

parents ce812de3 57124ba2
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@ import com.android.internal.logging.MetricsLogger
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.classifier.FalsingManagerFake
import com.android.systemui.classifier.FalsingManagerFake
import com.android.systemui.common.shared.model.asIcon
import com.android.systemui.common.shared.model.asIcon
import com.android.systemui.kosmos.mainCoroutineContext
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.kosmos.testScope
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.plugins.ActivityStarter
@@ -126,6 +127,7 @@ class ModesTileTest : SysuiTestCase() {


        userActionInteractor =
        userActionInteractor =
            ModesTileUserActionInteractor(
            ModesTileUserActionInteractor(
                kosmos.mainCoroutineContext,
                inputHandler,
                inputHandler,
                dialogDelegate,
                dialogDelegate,
                kosmos.zenModeInteractor,
                kosmos.zenModeInteractor,
+2 −0
Original line number Original line Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.Expandable
import com.android.systemui.animation.Expandable
import com.android.systemui.common.shared.model.asIcon
import com.android.systemui.common.shared.model.asIcon
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.mainCoroutineContext
import com.android.systemui.kosmos.testScope
import com.android.systemui.kosmos.testScope
import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandlerSubject
import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandlerSubject
import com.android.systemui.qs.tiles.base.actions.qsTileIntentUserInputHandler
import com.android.systemui.qs.tiles.base.actions.qsTileIntentUserInputHandler
@@ -62,6 +63,7 @@ class ModesTileUserActionInteractorTest : SysuiTestCase() {


    private val underTest =
    private val underTest =
        ModesTileUserActionInteractor(
        ModesTileUserActionInteractor(
            kosmos.mainCoroutineContext,
            inputHandler,
            inputHandler,
            mockDialogDelegate,
            mockDialogDelegate,
            zenModeInteractor,
            zenModeInteractor,
+10 −4
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@ import android.provider.Settings
import android.util.Log
import android.util.Log
import com.android.systemui.animation.Expandable
import com.android.systemui.animation.Expandable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.qs.flags.QSComposeFragment
import com.android.systemui.qs.flags.QSComposeFragment
import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler
import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler
import com.android.systemui.qs.tiles.base.interactor.QSTileInput
import com.android.systemui.qs.tiles.base.interactor.QSTileInput
@@ -31,11 +32,14 @@ import com.android.systemui.statusbar.policy.domain.interactor.ZenModeInteractor
import com.android.systemui.statusbar.policy.ui.dialog.ModesDialogDelegate
import com.android.systemui.statusbar.policy.ui.dialog.ModesDialogDelegate
import com.android.systemui.statusbar.policy.ui.dialog.ModesDialogEventLogger
import com.android.systemui.statusbar.policy.ui.dialog.ModesDialogEventLogger
import javax.inject.Inject
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
import kotlinx.coroutines.withContext


@SysUISingleton
@SysUISingleton
class ModesTileUserActionInteractor
class ModesTileUserActionInteractor
@Inject
@Inject
constructor(
constructor(
    @Main private val mainContext: CoroutineContext,
    private val qsTileIntentUserInputHandler: QSTileIntentUserInputHandler,
    private val qsTileIntentUserInputHandler: QSTileIntentUserInputHandler,
    // TODO(b/353896370): The domain layer should not have to depend on the UI layer.
    // TODO(b/353896370): The domain layer should not have to depend on the UI layer.
    private val dialogDelegate: ModesDialogDelegate,
    private val dialogDelegate: ModesDialogDelegate,
@@ -65,7 +69,7 @@ constructor(
        dialogDelegate.showDialog(expandable)
        dialogDelegate.showDialog(expandable)
    }
    }


    fun handleToggleClick(modesTileModel: ModesTileModel) {
    suspend fun handleToggleClick(modesTileModel: ModesTileModel) {
        if (QSComposeFragment.isUnexpectedlyInLegacyMode()) {
        if (QSComposeFragment.isUnexpectedlyInLegacyMode()) {
            return
            return
        }
        }
@@ -83,9 +87,11 @@ constructor(


            if (zenModeInteractor.shouldAskForZenDuration(dnd)) {
            if (zenModeInteractor.shouldAskForZenDuration(dnd)) {
                dialogEventLogger.logOpenDurationDialog(dnd)
                dialogEventLogger.logOpenDurationDialog(dnd)
                withContext(mainContext) {
                    // NOTE: The dialog handles turning on the mode itself.
                    // NOTE: The dialog handles turning on the mode itself.
                    val dialog = dialogDelegate.makeDndDurationDialog()
                    val dialog = dialogDelegate.makeDndDurationDialog()
                    dialog.show()
                    dialog.show()
                }
            } else {
            } else {
                dialogEventLogger.logModeOn(dnd)
                dialogEventLogger.logModeOn(dnd)
                zenModeInteractor.activateMode(dnd)
                zenModeInteractor.activateMode(dnd)
+2 −0
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.systemui.statusbar.policy.ui.dialog
package com.android.systemui.statusbar.policy.ui.dialog


import android.annotation.UiThread;
import android.app.Dialog
import android.app.Dialog
import android.content.Context
import android.content.Context
import android.content.Intent
import android.content.Intent
@@ -205,6 +206,7 @@ constructor(
     * Special dialog to ask the user for the duration of DND. Not to be confused with the modes
     * Special dialog to ask the user for the duration of DND. Not to be confused with the modes
     * dialog itself.
     * dialog itself.
     */
     */
    @UiThread
    fun makeDndDurationDialog(): Dialog {
    fun makeDndDurationDialog(): Dialog {
        val dialog =
        val dialog =
            EnableDndDialogFactory(
            EnableDndDialogFactory(
+2 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.qs.tiles.impl.modes.domain.interactor
package com.android.systemui.qs.tiles.impl.modes.domain.interactor


import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.mainCoroutineContext
import com.android.systemui.qs.tiles.base.actions.qsTileIntentUserInputHandler
import com.android.systemui.qs.tiles.base.actions.qsTileIntentUserInputHandler
import com.android.systemui.statusbar.policy.domain.interactor.zenModeInteractor
import com.android.systemui.statusbar.policy.domain.interactor.zenModeInteractor
import com.android.systemui.statusbar.policy.ui.dialog.modesDialogDelegate
import com.android.systemui.statusbar.policy.ui.dialog.modesDialogDelegate
@@ -26,6 +27,7 @@ import javax.inject.Provider
val Kosmos.modesTileUserActionInteractor: ModesTileUserActionInteractor by
val Kosmos.modesTileUserActionInteractor: ModesTileUserActionInteractor by
    Kosmos.Fixture {
    Kosmos.Fixture {
        ModesTileUserActionInteractor(
        ModesTileUserActionInteractor(
            mainCoroutineContext,
            qsTileIntentUserInputHandler,
            qsTileIntentUserInputHandler,
            Provider { modesDialogDelegate }.get(),
            Provider { modesDialogDelegate }.get(),
            zenModeInteractor,
            zenModeInteractor,