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

Commit a57f43b1 authored by Behnam Heydarshahi's avatar Behnam Heydarshahi
Browse files

Simplify ModesTileDataInteractor

No change in logic. Just removed redundant code.

Bug: 383761789
Flag: com.android.systemui.qs_new_tiles
Test: atest ModesTileDataInteractorTest
Change-Id: I12b949dcf3b9521d5e0f89c582aa3b273a7c9cb4
parent d0628f50
Loading
Loading
Loading
Loading
+20 −36
Original line number Diff line number Diff line
@@ -17,10 +17,10 @@
package com.android.systemui.qs.tiles.impl.modes.domain.interactor

import android.content.Context
import android.graphics.drawable.Drawable
import android.os.UserHandle
import com.android.app.tracing.coroutines.flow.flowName
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.common.shared.model.asIcon
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.modes.shared.ModesUi
import com.android.systemui.modes.shared.ModesUiIcons
@@ -31,7 +31,6 @@ import com.android.systemui.qs.tiles.impl.modes.domain.model.ModesTileModel
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.statusbar.policy.domain.interactor.ZenModeInteractor
import com.android.systemui.statusbar.policy.domain.model.ActiveZenModes
import com.android.systemui.statusbar.policy.domain.model.ZenModeInfo
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.Flow
@@ -68,44 +67,29 @@ constructor(
    suspend fun getCurrentTileModel() = buildTileData(zenModeInteractor.getActiveModes())

    private fun buildTileData(activeModes: ActiveZenModes): ModesTileModel {
        if (ModesUiIcons.isEnabled) {
            val tileIcon = getTileIcon(activeModes.mainMode)
            return ModesTileModel(
                isActivated = activeModes.isAnyActive(),
                icon = tileIcon.icon,
                activeModes = activeModes.modeNames,
            )
        } else {
            return ModesTileModel(
                isActivated = activeModes.isAnyActive(),
                icon =
                    context
                        .getDrawable(ModesTile.ICON_RES_ID)!!
                        .asIcon(res = ModesTile.ICON_RES_ID),
                activeModes = activeModes.modeNames,
            )
        }
    }

    private data class TileIcon(val icon: Icon.Loaded, val resId: Int?)
        val drawable: Drawable
        val iconRes: Int?
        val activeMode = activeModes.mainMode

    private fun getTileIcon(activeMode: ZenModeInfo?): TileIcon {
        return if (activeMode != null) {
        if (ModesUiIcons.isEnabled && activeMode != null) {
            // ZenIconKey.resPackage is null if its resId is a system icon.
            iconRes =
                if (activeMode.icon.key.resPackage == null) {
                TileIcon(
                    activeMode.icon.drawable.asIcon(res = activeMode.icon.key.resId),
                    activeMode.icon.key.resId,
                )
                    activeMode.icon.key.resId
                } else {
                TileIcon(activeMode.icon.drawable.asIcon(), null)
                    null
                }
            drawable = activeMode.icon.drawable
        } else {
            TileIcon(
                context.getDrawable(ModesTile.ICON_RES_ID)!!.asIcon(res = ModesTile.ICON_RES_ID),
                ModesTile.ICON_RES_ID,
            )
            iconRes = ModesTile.ICON_RES_ID
            drawable = context.getDrawable(iconRes)!!
        }

        return ModesTileModel(
            isActivated = activeModes.isAnyActive(),
            icon = Icon.Loaded(drawable, null, iconRes),
            activeModes = activeModes.modeNames,
        )
    }

    override fun availability(user: UserHandle): Flow<Boolean> = flowOf(ModesUi.isEnabled)