diff options
author | kiatt210 <40639725+kiatt210@users.noreply.github.com> | 2024-06-23 09:50:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-23 15:50:10 +0800 |
commit | 6a96deb5898745d957ffd7860b2b6821c673e907 (patch) | |
tree | cf75e32d502091a3ef58e48dfd9da8e58bf612a7 /models/activities | |
parent | bda875b6e6dc9aedf9b4e72067dd5c857b95726a (diff) | |
download | gitea-6a96deb5898745d957ffd7860b2b6821c673e907.tar.gz gitea-6a96deb5898745d957ffd7860b2b6821c673e907.zip |
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>
Diffstat (limited to 'models/activities')
-rw-r--r-- | models/activities/notification.go | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/models/activities/notification.go b/models/activities/notification.go index dc1b8c6fae..b888adeb60 100644 --- a/models/activities/notification.go +++ b/models/activities/notification.go @@ -286,13 +286,14 @@ type UserIDCount struct { 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) { - 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 ` + - `updated_unix < ?) AND status = ? GROUP BY user_id` + `updated_unix < ?) GROUP BY user_id` 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. |