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

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

Merge "invalidate on summarization onboarding reinflate" into main

parents 699d5ab3 8f661d5f
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.systemui.statusbar.notification.collection.provider.SectionSt
import com.android.systemui.statusbar.notification.promoted.AutomaticPromotionCoordinator
import com.android.systemui.statusbar.notification.shared.NotificationBundleUi
import com.android.systemui.statusbar.notification.shared.NotificationMinimalism
import com.android.systemui.statusbar.notification.shared.NotificationSummarizationOnboardingUi
import javax.inject.Inject

/**
@@ -67,6 +68,7 @@ constructor(
    dismissibilityCoordinator: DismissibilityCoordinator,
    statsLoggerCoordinator: NotificationStatsLoggerCoordinator,
    bundleCoordinator: BundleCoordinator,
    summarizationCoordinator: SummarizationCoordinator,
    automaticPromotionCoordinator: AutomaticPromotionCoordinator,
) : NotifCoordinators {

@@ -110,6 +112,9 @@ constructor(
        if (NotificationBundleUi.isEnabled) {
            mCoordinators.add(bundleCoordinator)
        }
        if (NotificationSummarizationOnboardingUi.isEnabled) {
            mCoordinators.add(summarizationCoordinator)
        }
        mCoordinators.add(statsLoggerCoordinator)
        // Manually add Ordered Sections
        if (NotificationMinimalism.isEnabled) {
+50 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.statusbar.notification.collection.coordinator

import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.statusbar.notification.OnboardingAffordanceManager
import com.android.systemui.statusbar.notification.Summarization
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Invalidator
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch

/** Coordinator for notification summarization features. */
@CoordinatorScope
class SummarizationCoordinator
@Inject
constructor(
    @Application private val scope: CoroutineScope,
    @Summarization private val onboardingAffordanceManager: OnboardingAffordanceManager,
) : Coordinator {
    override fun attach(pipeline: NotifPipeline) {
        bindOnboardingAffordanceInvalidator(pipeline)
    }

    private fun bindOnboardingAffordanceInvalidator(pipeline: NotifPipeline) {
        val invalidator = object : Invalidator("summarization onboarding") {}
        pipeline.addPreRenderInvalidator(invalidator)
        scope.launch {
            onboardingAffordanceManager.view.collect {
                invalidator.invalidateList("summarization onboarding view changed")
            }
        }
    }
}