[bugfix] Fix top-level posts with a mention being counted as replies when doing exclude_replies (#3689)

* [bugfix] Fix top-level posts with a mention being counted as replies

* add index for new reply exclusion query
This commit is contained in:
tobi 2025-01-27 12:10:18 +01:00 committed by GitHub
commit 702d49207f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 100 additions and 7 deletions

View file

@ -899,15 +899,19 @@ func (a *accountDB) GetAccountStatuses(ctx context.Context, accountID string, li
if excludeReplies {
q = q.WhereGroup(" AND ", func(q *bun.SelectQuery) *bun.SelectQuery {
// We're excluding replies so
// only include posts if they:
return q.
// Do include self replies (threads), but
// don't include replies to other people.
Where("? = ?", bun.Ident("status.in_reply_to_account_id"), accountID).
WhereOr("? IS NULL", bun.Ident("status.in_reply_to_uri"))
// Don't reply to anything OR
Where("? IS NULL", bun.Ident("status.in_reply_to_uri")).
// reply to self AND don't mention
// anyone (ie., self-reply threads).
WhereGroup(" OR ", func(q *bun.SelectQuery) *bun.SelectQuery {
q = q.Where("? = ?", bun.Ident("status.in_reply_to_account_id"), accountID)
q = whereArrayIsNullOrEmpty(q, bun.Ident("status.mentions"))
return q
})
})
// Don't include replies that mention other people:
// for example, an account's reply to its own reply to someone else.
q = whereArrayIsNullOrEmpty(q, bun.Ident("status.mentions"))
}
if excludeReblogs {