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

Commit 1bf998e2 authored by Steve Elliott's avatar Steve Elliott
Browse files

Fix race condition btwn row and shelf icon init

Fixes: 154228740
Test: manual
Change-Id: I4bedcc9c50817418a49c4a69d3132c01720cd206
parent 0c904c32
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -178,6 +178,7 @@ public final class NotificationEntry extends ListEntry {
    private int mBucket = BUCKET_ALERTING;
    @Nullable private Long mPendingAnimationDuration;
    private boolean mIsMarkedForUserTriggeredMovement;
    private boolean mShelfIconVisible;

    /**
     * @param sbn the StatusBarNotification from system server
@@ -431,6 +432,7 @@ public final class NotificationEntry extends ListEntry {
    //TODO: This will go away when we have a way to bind an entry to a row
    public void setRow(ExpandableNotificationRow row) {
        this.row = row;
        updateShelfIconVisibility();
    }

    public ExpandableNotificationRowController getRowController() {
@@ -951,6 +953,18 @@ public final class NotificationEntry extends ListEntry {
        return mIsMarkedForUserTriggeredMovement;
    }

    /** Whether or not the icon for this notification is visible in the shelf. */
    public void setShelfIconVisible(boolean shelfIconVisible) {
        mShelfIconVisible = shelfIconVisible;
        updateShelfIconVisibility();
    }

    private void updateShelfIconVisibility() {
        if (row != null) {
            row.setShelfIconVisible(mShelfIconVisible);
        }
    }

    /**
     * Mark this entry for movement triggered by a user action (ex: changing the priorirty of a
     * conversation). This can then be used for custom animations.
+2 −4
Original line number Diff line number Diff line
@@ -96,13 +96,11 @@ class IconManager @Inject constructor(
        val shelfIcon = iconBuilder.createIconView(entry)
        shelfIcon.scaleType = ImageView.ScaleType.CENTER_INSIDE

        shelfIcon.visibility = View.INVISIBLE
        // TODO: This doesn't belong here
        shelfIcon.setOnVisibilityChangedListener { newVisibility: Int ->
            if (entry.row != null) {
                entry.row.setShelfIconVisible(newVisibility == View.VISIBLE)
            }
            entry.setShelfIconVisible(newVisibility == View.VISIBLE)
        }
        shelfIcon.visibility = View.INVISIBLE

        // Construct the aod icon view.
        val aodIcon = iconBuilder.createIconView(entry)