Add NotificationData to all rooms in a sync response; Only remove

UnreadNotifications if everything else is empty
This commit is contained in:
Till Faelligen 2022-10-14 09:56:04 +02:00
parent 088ad1dd21
commit 7132766c26
No known key found for this signature in database
GPG key ID: 3DF82D8AB9211D4E
2 changed files with 7 additions and 4 deletions

View file

@ -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,

View file

@ -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)
}