From 56d772fafc7f520c60271a77da4a4e691cefebde Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Fri, 4 Sep 2020 14:20:00 +0100 Subject: [PATCH] Cancel peeks on join again --- syncapi/storage/shared/syncserver.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/syncapi/storage/shared/syncserver.go b/syncapi/storage/shared/syncserver.go index 79d140cf..b3c5fc7f 100644 --- a/syncapi/storage/shared/syncserver.go +++ b/syncapi/storage/shared/syncserver.go @@ -1129,8 +1129,10 @@ func (d *Database) getStateDeltasForFullStateSync( } // Add full states for all peeking rooms + peeking := make(map[string]bool) newPeeks := false for _, peek := range peeks { + peeking[peek.RoomID] = true if peek.New { newPeeks = true } @@ -1192,6 +1194,16 @@ func (d *Database) getStateDeltasForFullStateSync( if stateErr != nil { return nil, nil, stateErr } + if peeking[joinedRoomID] { + // we automatically cancel our peeks when we join a room + if err = d.Writer.Do(d.DB, txn, func(txn *sql.Tx) error { + // XXX: is it correct that we're discarding the streamid here? + _, err = d.Peeks.DeletePeeks(ctx, txn, joinedRoomID, userID) + return err + }); err != nil { + return nil, nil, err + } + } deltas[joinedRoomID] = stateDelta{ membership: gomatrixserverlib.Join, stateEvents: d.StreamEventsToEvents(device, s),