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

Commit 8c293fec authored by Dan Sandler's avatar Dan Sandler Committed by Android Git Automerger
Browse files

am 8612d151: Merge "NoMan: Rank by \'when\' instead of \'postTime\'" into lmp-preview-dev

* commit '8612d151b32e654daf4bb673ab93e402b56dd447':
  NoMan: Rank by 'when' instead of 'postTime'
parents 525f5773 2a03b2fa
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -41,6 +41,6 @@ public class NotificationComparator
            return -1 * Float.compare(leftPeple, rightPeople);
        }
        // then break ties by time, most recent first
        return -1 * Long.compare(lhs.sbn.getPostTime(), rhs.sbn.getPostTime());
        return -1 * Long.compare(lhs.getRankingTimeMs(), rhs.getRankingTimeMs());
    }
}
+31 −0
Original line number Diff line number Diff line
@@ -54,6 +54,9 @@ public final class NotificationRecord {
    // InterceptedNotifications needs to know if this has been previously evaluated.
    private boolean mTouchedByZen;

    // The timestamp used for ranking.
    private long mRankingTimeMs;

    // Is this record an update of an old record?
    public boolean isUpdate;

@@ -61,6 +64,7 @@ public final class NotificationRecord {
    {
        this.sbn = sbn;
        this.score = score;
        mRankingTimeMs = calculateRankingTimeMs(0L);
    }

    // copy any notes that the ranking system may have made before the update
@@ -69,6 +73,7 @@ public final class NotificationRecord {
        mRecentlyIntrusive = previous.mRecentlyIntrusive;
        mTouchedByZen = previous.mTouchedByZen;
        mIntercept = previous.mIntercept;
        mRankingTimeMs = calculateRankingTimeMs(previous.getRankingTimeMs());
    }

    public Notification getNotification() { return sbn.getNotification(); }
@@ -139,6 +144,7 @@ public final class NotificationRecord {
        pw.println(prefix + "  mContactAffinity=" + mContactAffinity);
        pw.println(prefix + "  mRecentlyIntrusive=" + mRecentlyIntrusive);
        pw.println(prefix + "  mIntercept=" + mIntercept);
        pw.println(prefix + "  mRankingTimeMs=" + mRankingTimeMs);
    }


@@ -206,4 +212,29 @@ public final class NotificationRecord {
        mTouchedByZen = true;
    }

    /**
     * Returns the timestamp to use for time-based sorting in the ranker.
     */
    public long getRankingTimeMs() {
        return mRankingTimeMs;
    }

    /**
     * @param previousRankingTimeMs for updated notifications, {@link #getRankingTimeMs()}
     *     of the previous notification record, 0 otherwise
     */
    private long calculateRankingTimeMs(long previousRankingTimeMs) {
        Notification n = getNotification();
        // Take developer provided 'when', unless it's in the future.
        if (n.when != 0 && n.when <= sbn.getPostTime()) {
            return n.when;
        }
        // If we've ranked a previous instance with a timestamp, inherit it. This case is
        // important in order to have ranking stability for updating notifications.
        if (previousRankingTimeMs > 0) {
            return previousRankingTimeMs;
        }
        return sbn.getPostTime();
    }

}