Fix inbox ordering: self-touched issues no longer sink to bottom (#2144)

issueLastActivityTimestamp() returned 0 for issues where the user was
the last to touch them (myLastTouchAt >= updatedAt) and no external
comment existed. This pushed those items to the bottom of the inbox
list regardless of how recently they were updated.

Now falls back to updatedAt instead, so recently updated items sort
to the top of the Recent tab as expected.

Co-authored-by: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Devin Foley 2026-04-01 14:52:53 -07:00 committed by GitHub
parent 6c2c63e0f1
commit dedd972e3d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 5 deletions

View file

@ -345,6 +345,26 @@ describe("inbox helpers", () => {
]);
});
it("sorts self-touched issues without external comments by updatedAt", () => {
const recentSelfTouched = makeIssue("recent", false);
recentSelfTouched.lastExternalCommentAt = null as unknown as Date;
recentSelfTouched.updatedAt = new Date("2026-03-11T05:00:00.000Z");
recentSelfTouched.myLastTouchAt = new Date("2026-03-11T05:00:00.000Z");
const olderCommented = makeIssue("older", false);
olderCommented.lastExternalCommentAt = new Date("2026-03-11T03:00:00.000Z");
const items = getInboxWorkItems({
issues: [olderCommented, recentSelfTouched],
approvals: [],
});
expect(items.map((i) => (i.kind === "issue" ? i.issue.id : ""))).toEqual([
"recent",
"older",
]);
});
it("can include sections on recent without forcing them to be unread", () => {
expect(
shouldShowInboxSection({

View file

@ -148,11 +148,7 @@ export function issueLastActivityTimestamp(issue: Issue): number {
const lastExternalCommentAt = normalizeTimestamp(issue.lastExternalCommentAt);
if (lastExternalCommentAt > 0) return lastExternalCommentAt;
const updatedAt = normalizeTimestamp(issue.updatedAt);
const myLastTouchAt = normalizeTimestamp(issue.myLastTouchAt);
if (myLastTouchAt > 0 && updatedAt <= myLastTouchAt) return 0;
return updatedAt;
return normalizeTimestamp(issue.updatedAt);
}
export function sortIssuesByMostRecentActivity(a: Issue, b: Issue): number {