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

Commit 80c44dd8 authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed a bug where the summary could become visible even if it was suppressed

Because the updating of the suppression was prohibited, some groups could loose
their suppression state when they were heads upped. This would lead to duplicate
notifications. We're now still allowing the state to be properly modified instead
but don't notify listeners anymore since that was only an internal update.

Change-Id: I6ae96ea8cfab00ef6bdb1ef047f8b77ea88e8206
Fixes: 30608517
parent 60ab8d07
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ public class NotificationGroupManager implements HeadsUpManager.OnHeadsUpChanged
    private int mBarState = -1;
    private HashMap<String, StatusBarNotification> mIsolatedEntries = new HashMap<>();
    private HeadsUpManager mHeadsUpManager;
    private boolean mUpdatingSuppressionBlocked;
    private boolean mIsUpdatingUnchangedGroup;

    public void setOnGroupChangeListener(OnGroupChangeListener listener) {
        mListener = listener;
@@ -141,7 +141,7 @@ public class NotificationGroupManager implements HeadsUpManager.OnHeadsUpChanged
    }

    private void updateSuppression(NotificationGroup group) {
        if (group == null || mUpdatingSuppressionBlocked) {
        if (group == null) {
            return;
        }
        boolean prevSuppressed = group.suppressed;
@@ -154,9 +154,11 @@ public class NotificationGroupManager implements HeadsUpManager.OnHeadsUpChanged
            if (group.suppressed) {
                handleSuppressedSummaryHeadsUpped(group.summary);
            }
            if (!mIsUpdatingUnchangedGroup) {
                mListener.onGroupsChanged();
            }
        }
    }

    private boolean hasIsolatedChildren(NotificationGroup group) {
        return getNumberOfIsolatedChildren(group.summary.notification.getGroupKey()) != 0;
@@ -188,12 +190,12 @@ public class NotificationGroupManager implements HeadsUpManager.OnHeadsUpChanged
        boolean groupKeysChanged = !oldKey.equals(newKey);
        boolean wasGroupChild = isGroupChild(oldNotification);
        boolean isGroupChild = isGroupChild(entry.notification);
        mUpdatingSuppressionBlocked = !groupKeysChanged && wasGroupChild == isGroupChild;
        mIsUpdatingUnchangedGroup = !groupKeysChanged && wasGroupChild == isGroupChild;
        if (mGroupMap.get(getGroupKey(oldNotification)) != null) {
            onEntryRemovedInternal(entry, oldNotification);
        }
        onEntryAdded(entry);
        mUpdatingSuppressionBlocked = false;
        mIsUpdatingUnchangedGroup = false;
        if (isIsolated(entry.notification)) {
            mIsolatedEntries.put(entry.key, entry.notification);
            if (groupKeysChanged) {