diff --git a/syncapi/streams/stream_notificationdata.go b/syncapi/streams/stream_notificationdata.go index 5a81fd09a..66ee0ded9 100644 --- a/syncapi/streams/stream_notificationdata.go +++ b/syncapi/streams/stream_notificationdata.go @@ -3,6 +3,7 @@ package streams import ( "context" + "github.com/matrix-org/dendrite/internal/eventutil" "github.com/matrix-org/dendrite/syncapi/storage" "github.com/matrix-org/dendrite/syncapi/types" ) @@ -53,7 +54,7 @@ func (p *NotificationDataStreamProvider) IncrementalSync( for roomID, jr := range req.Response.Rooms.Join { counts := countsByRoom[roomID] if counts == nil { - continue + counts = &eventutil.NotificationData{} } jr.UnreadNotifications = &types.UnreadNotifications{ HighlightCount: counts.UnreadHighlightCount, diff --git a/syncapi/types/types.go b/syncapi/types/types.go index 60a74a285..57ce7b6ff 100644 --- a/syncapi/types/types.go +++ b/syncapi/types/types.go @@ -492,9 +492,11 @@ func (jr JoinResponse) MarshalJSON() ([]byte, error) { } } - if jr.UnreadNotifications != nil && - jr.UnreadNotifications.NotificationCount == 0 && jr.UnreadNotifications.HighlightCount == 0 { - a.UnreadNotifications = nil + if jr.UnreadNotifications != nil { + // if everything else is nil, also remove UnreadNotifications + if a.State == nil && a.Ephemeral == nil && a.AccountData == nil && a.Timeline == nil && a.Summary == nil { + a.UnreadNotifications = nil + } } return json.Marshal(a) } diff --git a/sytest-whitelist b/sytest-whitelist index 2bd8b9403..93d447d28 100644 --- a/sytest-whitelist +++ b/sytest-whitelist @@ -744,4 +744,6 @@ User in remote room doesn't appear in user directory after server left room User in shared private room does appear in user directory until leave Existing members see new member's presence Inbound federation can return missing events for joined visibility -outliers whose auth_events are in a different room are correctly rejected \ No newline at end of file +outliers whose auth_events are in a different room are correctly rejected +Messages that notify from another user increment notification_count +Messages that highlight from another user increment unread highlight count \ No newline at end of file