Return r.from instead of an empty token

This commit is contained in:
Till Faelligen 2023-07-11 11:21:07 +02:00
parent dda77adb75
commit bb3566a649
No known key found for this signature in database
GPG key ID: ACCDC9606D472758
2 changed files with 8 additions and 7 deletions

View file

@ -336,10 +336,10 @@ func (r *messagesReq) retrieveEvents(ctx context.Context, rsAPI api.SyncRoomserv
// removed all of them. This means there are no events for this user // removed all of them. This means there are no events for this user
// anymore. Let them know. // anymore. Let them know.
if errors.Is(err, shared.ErrNoEventsForFilter) { if errors.Is(err, shared.ErrNoEventsForFilter) {
return []synctypes.ClientEvent{}, emptyToken, emptyToken, nil return []synctypes.ClientEvent{}, *r.from, emptyToken, nil
} }
err = fmt.Errorf("GetEventsInRange: %w", err) err = fmt.Errorf("GetEventsInRange: %w", err)
return []synctypes.ClientEvent{}, emptyToken, emptyToken, err return []synctypes.ClientEvent{}, *r.from, emptyToken, err
} }
var events []*rstypes.HeaderedEvent var events []*rstypes.HeaderedEvent
@ -354,17 +354,17 @@ func (r *messagesReq) retrieveEvents(ctx context.Context, rsAPI api.SyncRoomserv
// on the ordering), or we've reached a backward extremity. // on the ordering), or we've reached a backward extremity.
if len(streamEvents) == 0 { if len(streamEvents) == 0 {
if events, err = r.handleEmptyEventsSlice(); err != nil { if events, err = r.handleEmptyEventsSlice(); err != nil {
return []synctypes.ClientEvent{}, emptyToken, emptyToken, err return []synctypes.ClientEvent{}, *r.from, emptyToken, err
} }
} else { } else {
if events, err = r.handleNonEmptyEventsSlice(streamEvents); err != nil { if events, err = r.handleNonEmptyEventsSlice(streamEvents); err != nil {
return []synctypes.ClientEvent{}, emptyToken, emptyToken, err return []synctypes.ClientEvent{}, *r.from, emptyToken, err
} }
} }
// If we didn't get any event, we don't need to proceed any further. // If we didn't get any event, we don't need to proceed any further.
if len(events) == 0 { if len(events) == 0 {
return []synctypes.ClientEvent{}, emptyToken, emptyToken, nil return []synctypes.ClientEvent{}, *r.from, emptyToken, nil
} }
// Apply room history visibility filter // Apply room history visibility filter
@ -382,7 +382,7 @@ func (r *messagesReq) retrieveEvents(ctx context.Context, rsAPI api.SyncRoomserv
// No events left after applying history visibility // No events left after applying history visibility
if len(filteredEvents) == 0 { if len(filteredEvents) == 0 {
return []synctypes.ClientEvent{}, emptyToken, emptyToken, nil return []synctypes.ClientEvent{}, *r.from, emptyToken, nil
} }
// Get the position of the first and the last event in the room's topology. // Get the position of the first and the last event in the room's topology.

View file

@ -224,7 +224,8 @@ func TestGetEventsInRangeWithTopologyToken(t *testing.T) {
}) })
} }
// The purpose of this test is to ensure that backfill does indeed go backwards, using a topology token // The purpose of this test is to ensure that backfilling returns no start/end if a given filter removes
// all events.
func TestGetEventsInRangeWithTopologyTokenNoEventsForFilter(t *testing.T) { func TestGetEventsInRangeWithTopologyTokenNoEventsForFilter(t *testing.T) {
test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) { test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) {
db, close := MustCreateDatabase(t, dbType) db, close := MustCreateDatabase(t, dbType)