mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-17 11:53:09 -06:00
fixed review changes
This commit is contained in:
parent
32827f01c6
commit
4a4dac9fae
|
|
@ -80,12 +80,12 @@ const selectEventsSQL = "" +
|
||||||
|
|
||||||
const selectRecentEventsSQL = "" +
|
const selectRecentEventsSQL = "" +
|
||||||
"SELECT id, event_json, session_id, exclude_from_sync, transaction_id FROM syncapi_output_room_events" +
|
"SELECT id, event_json, session_id, exclude_from_sync, transaction_id FROM syncapi_output_room_events" +
|
||||||
" WHERE room_id = $1 AND id > $2 AND id <= $3" +
|
" WHERE room_id = $1 AND id > $2 AND id <= $3 AND sender != ALL($5)" +
|
||||||
" ORDER BY id DESC LIMIT $4"
|
" ORDER BY id DESC LIMIT $4"
|
||||||
|
|
||||||
const selectRecentEventsForSyncSQL = "" +
|
const selectRecentEventsForSyncSQL = "" +
|
||||||
"SELECT id, event_json, session_id, exclude_from_sync, transaction_id FROM syncapi_output_room_events" +
|
"SELECT id, event_json, session_id, exclude_from_sync, transaction_id FROM syncapi_output_room_events" +
|
||||||
" WHERE room_id = $1 AND id > $2 AND id <= $3 AND exclude_from_sync = FALSE" +
|
" WHERE room_id = $1 AND id > $2 AND id <= $3 AND exclude_from_sync = FALSE AND sender != ALL($5)" +
|
||||||
" ORDER BY id DESC LIMIT $4"
|
" ORDER BY id DESC LIMIT $4"
|
||||||
|
|
||||||
const selectEarlyEventsSQL = "" +
|
const selectEarlyEventsSQL = "" +
|
||||||
|
|
@ -290,7 +290,7 @@ func (s *outputRoomEventsStatements) insertEvent(
|
||||||
func (s *outputRoomEventsStatements) selectRecentEvents(
|
func (s *outputRoomEventsStatements) selectRecentEvents(
|
||||||
ctx context.Context, txn *sql.Tx,
|
ctx context.Context, txn *sql.Tx,
|
||||||
roomID string, fromPos, toPos types.StreamPosition, limit int,
|
roomID string, fromPos, toPos types.StreamPosition, limit int,
|
||||||
chronologicalOrder bool, onlySyncEvents bool,
|
chronologicalOrder bool, onlySyncEvents bool, ignoredUsers []string,
|
||||||
) ([]types.StreamEvent, error) {
|
) ([]types.StreamEvent, error) {
|
||||||
var stmt *sql.Stmt
|
var stmt *sql.Stmt
|
||||||
if onlySyncEvents {
|
if onlySyncEvents {
|
||||||
|
|
@ -299,7 +299,7 @@ func (s *outputRoomEventsStatements) selectRecentEvents(
|
||||||
stmt = common.TxStmt(txn, s.selectRecentEventsStmt)
|
stmt = common.TxStmt(txn, s.selectRecentEventsStmt)
|
||||||
}
|
}
|
||||||
|
|
||||||
rows, err := stmt.QueryContext(ctx, roomID, fromPos, toPos, limit)
|
rows, err := stmt.QueryContext(ctx, roomID, fromPos, toPos, limit, pq.StringArray(ignoredUsers))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -292,7 +292,7 @@ func (d *SyncServerDatasource) GetEventsInRange(
|
||||||
if backwardOrdering {
|
if backwardOrdering {
|
||||||
// When using backward ordering, we want the most recent events first.
|
// When using backward ordering, we want the most recent events first.
|
||||||
if events, err = d.events.selectRecentEvents(
|
if events, err = d.events.selectRecentEvents(
|
||||||
ctx, nil, roomID, to.PDUPosition, from.PDUPosition, limit, false, false,
|
ctx, nil, roomID, to.PDUPosition, from.PDUPosition, limit, false, false, nil,
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -612,12 +612,11 @@ func (d *SyncServerDatasource) getResponseWithPDUsForCompleteSync(
|
||||||
var recentStreamEvents []types.StreamEvent
|
var recentStreamEvents []types.StreamEvent
|
||||||
recentStreamEvents, err = d.events.selectRecentEvents(
|
recentStreamEvents, err = d.events.selectRecentEvents(
|
||||||
ctx, txn, roomID, types.StreamPosition(0), toPos.PDUPosition,
|
ctx, txn, roomID, types.StreamPosition(0), toPos.PDUPosition,
|
||||||
numRecentEventsPerRoom, true, true,
|
numRecentEventsPerRoom, true, true, ignoredUsers,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
recentStreamEvents = removeIgnoredUserEvents(recentStreamEvents, ignoredUsers)
|
|
||||||
|
|
||||||
// Retrieve the backward topology position, i.e. the position of the
|
// Retrieve the backward topology position, i.e. the position of the
|
||||||
// oldest event in the room's topology.
|
// oldest event in the room's topology.
|
||||||
|
|
@ -651,26 +650,6 @@ func (d *SyncServerDatasource) getResponseWithPDUsForCompleteSync(
|
||||||
return res, toPos, joinedRoomIDs, err
|
return res, toPos, joinedRoomIDs, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func removeIgnoredUserEvents(events []types.StreamEvent, ignoredUsers []string) []types.StreamEvent {
|
|
||||||
if len(ignoredUsers) == 0 {
|
|
||||||
return events
|
|
||||||
}
|
|
||||||
eventsWithoutIgnoredUsers := make([]types.StreamEvent, 0, len(events))
|
|
||||||
for _, event := range events {
|
|
||||||
isSenderIgnored := false
|
|
||||||
for _, ignoredUser := range ignoredUsers {
|
|
||||||
if ignoredUser == event.Sender() {
|
|
||||||
isSenderIgnored = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !isSenderIgnored {
|
|
||||||
eventsWithoutIgnoredUsers = append(eventsWithoutIgnoredUsers, event)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return eventsWithoutIgnoredUsers
|
|
||||||
}
|
|
||||||
|
|
||||||
// CompleteSync returns a complete /sync API response for the given user.
|
// CompleteSync returns a complete /sync API response for the given user.
|
||||||
func (d *SyncServerDatasource) CompleteSync(
|
func (d *SyncServerDatasource) CompleteSync(
|
||||||
ctx context.Context, userID string, numRecentEventsPerRoom int, ignoredUsers []string,
|
ctx context.Context, userID string, numRecentEventsPerRoom int, ignoredUsers []string,
|
||||||
|
|
@ -830,12 +809,11 @@ func (d *SyncServerDatasource) addRoomDeltaToResponse(
|
||||||
}
|
}
|
||||||
recentStreamEvents, err := d.events.selectRecentEvents(
|
recentStreamEvents, err := d.events.selectRecentEvents(
|
||||||
ctx, txn, delta.roomID, types.StreamPosition(fromPos), types.StreamPosition(endPos),
|
ctx, txn, delta.roomID, types.StreamPosition(fromPos), types.StreamPosition(endPos),
|
||||||
numRecentEventsPerRoom, true, true,
|
numRecentEventsPerRoom, true, true, ignoredUsers,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
recentStreamEvents = removeIgnoredUserEvents(recentStreamEvents, ignoredUsers)
|
|
||||||
recentEvents := d.StreamEventsToEvents(device, recentStreamEvents)
|
recentEvents := d.StreamEventsToEvents(device, recentStreamEvents)
|
||||||
delta.stateEvents = removeDuplicates(delta.stateEvents, recentEvents) // roll back
|
delta.stateEvents = removeDuplicates(delta.stateEvents, recentEvents) // roll back
|
||||||
backwardTopologyPos := d.getBackwardTopologyPos(ctx, recentStreamEvents)
|
backwardTopologyPos := d.getBackwardTopologyPos(ctx, recentStreamEvents)
|
||||||
|
|
|
||||||
|
|
@ -138,9 +138,13 @@ func (rp *RequestPool) currentSyncForUser(req syncRequest, latestPos types.Pagin
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var ignoredUserList []string
|
var ignoredUserList []string
|
||||||
if data, e := rp.accountDB.GetAccountDataByType(req.ctx, localpart, "", "m.ignored_user_list"); e == nil && data != nil {
|
data, err := rp.accountDB.GetAccountDataByType(req.ctx, localpart, "", "m.ignored_user_list")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if data != nil {
|
||||||
var ignoredUserMap map[string]map[string]interface{}
|
var ignoredUserMap map[string]map[string]interface{}
|
||||||
if e = json.Unmarshal(data.Content, &ignoredUserMap); e == nil {
|
if err = json.Unmarshal(data.Content, &ignoredUserMap); err == nil {
|
||||||
ignoredUserList = make([]string, 0, len(ignoredUserMap))
|
ignoredUserList = make([]string, 0, len(ignoredUserMap))
|
||||||
for ignoredUser := range ignoredUserMap["ignored_users"] {
|
for ignoredUser := range ignoredUserMap["ignored_users"] {
|
||||||
ignoredUserList = append(ignoredUserList, ignoredUser)
|
ignoredUserList = append(ignoredUserList, ignoredUser)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue