Hopefully fix read receipts (#2241)

This commit is contained in:
Neil Alexander 2022-03-01 16:59:11 +00:00 committed by GitHub
parent cda2452ba0
commit 726529fe99
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 4 additions and 5 deletions

View file

@ -96,7 +96,7 @@ func (r *receiptStatements) UpsertReceipt(ctx context.Context, txn *sql.Tx, room
} }
func (r *receiptStatements) SelectRoomReceiptsAfter(ctx context.Context, roomIDs []string, streamPos types.StreamPosition) (types.StreamPosition, []api.OutputReceiptEvent, error) { func (r *receiptStatements) SelectRoomReceiptsAfter(ctx context.Context, roomIDs []string, streamPos types.StreamPosition) (types.StreamPosition, []api.OutputReceiptEvent, error) {
lastPos := streamPos var lastPos types.StreamPosition
rows, err := r.selectRoomReceipts.QueryContext(ctx, pq.Array(roomIDs), streamPos) rows, err := r.selectRoomReceipts.QueryContext(ctx, pq.Array(roomIDs), streamPos)
if err != nil { if err != nil {
return 0, nil, fmt.Errorf("unable to query room receipts: %w", err) return 0, nil, fmt.Errorf("unable to query room receipts: %w", err)

View file

@ -101,7 +101,7 @@ func (r *receiptStatements) UpsertReceipt(ctx context.Context, txn *sql.Tx, room
// SelectRoomReceiptsAfter select all receipts for a given room after a specific timestamp // SelectRoomReceiptsAfter select all receipts for a given room after a specific timestamp
func (r *receiptStatements) SelectRoomReceiptsAfter(ctx context.Context, roomIDs []string, streamPos types.StreamPosition) (types.StreamPosition, []api.OutputReceiptEvent, error) { func (r *receiptStatements) SelectRoomReceiptsAfter(ctx context.Context, roomIDs []string, streamPos types.StreamPosition) (types.StreamPosition, []api.OutputReceiptEvent, error) {
selectSQL := strings.Replace(selectRoomReceipts, "($2)", sqlutil.QueryVariadicOffset(len(roomIDs), 1), 1) selectSQL := strings.Replace(selectRoomReceipts, "($2)", sqlutil.QueryVariadicOffset(len(roomIDs), 1), 1)
lastPos := streamPos var lastPos types.StreamPosition
params := make([]interface{}, len(roomIDs)+1) params := make([]interface{}, len(roomIDs)+1)
params[0] = streamPos params[0] = streamPos
for k, v := range roomIDs { for k, v := range roomIDs {

View file

@ -63,7 +63,6 @@ func (p *ReceiptStreamProvider) IncrementalSync(
if existing, ok := req.Response.Rooms.Join[roomID]; ok { if existing, ok := req.Response.Rooms.Join[roomID]; ok {
jr = existing jr = existing
} }
var ok bool
ev := gomatrixserverlib.ClientEvent{ ev := gomatrixserverlib.ClientEvent{
Type: gomatrixserverlib.MReceipt, Type: gomatrixserverlib.MReceipt,
@ -71,8 +70,8 @@ func (p *ReceiptStreamProvider) IncrementalSync(
} }
content := make(map[string]eduAPI.ReceiptMRead) content := make(map[string]eduAPI.ReceiptMRead)
for _, receipt := range receipts { for _, receipt := range receipts {
var read eduAPI.ReceiptMRead read, ok := content[receipt.EventID]
if read, ok = content[receipt.EventID]; !ok { if !ok {
read = eduAPI.ReceiptMRead{ read = eduAPI.ReceiptMRead{
User: make(map[string]eduAPI.ReceiptTS), User: make(map[string]eduAPI.ReceiptTS),
} }