Fix web notification icon not updated once you read all notifications (#31447)

Fix #29065
Remove status filtering from GetUIDsAndNotificationCounts sql.

---------

Co-authored-by: kiatt210 <kiatt210@github.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
kiatt210 2024-06-23 09:50:10 +02:00 committed by GitHub
parent bda875b6e6
commit 6a96deb589
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -286,13 +286,14 @@ type UserIDCount struct {
Count int64 Count int64
} }
// GetUIDsAndNotificationCounts between the two provided times // GetUIDsAndNotificationCounts returns the unread counts for every user between the two provided times.
// It must return all user IDs which appear during the period, including count=0 for users who have read all.
func GetUIDsAndNotificationCounts(ctx context.Context, since, until timeutil.TimeStamp) ([]UserIDCount, error) { func GetUIDsAndNotificationCounts(ctx context.Context, since, until timeutil.TimeStamp) ([]UserIDCount, error) {
sql := `SELECT user_id, count(*) AS count FROM notification ` + sql := `SELECT user_id, sum(case when status= ? then 1 else 0 end) AS count FROM notification ` +
`WHERE user_id IN (SELECT user_id FROM notification WHERE updated_unix >= ? AND ` + `WHERE user_id IN (SELECT user_id FROM notification WHERE updated_unix >= ? AND ` +
`updated_unix < ?) AND status = ? GROUP BY user_id` `updated_unix < ?) GROUP BY user_id`
var res []UserIDCount var res []UserIDCount
return res, db.GetEngine(ctx).SQL(sql, since, until, NotificationStatusUnread).Find(&res) return res, db.GetEngine(ctx).SQL(sql, NotificationStatusUnread, since, until).Find(&res)
} }
// SetIssueReadBy sets issue to be read by given user. // SetIssueReadBy sets issue to be read by given user.