diff --git a/syncapi/storage/postgres/presence_table.go b/syncapi/storage/postgres/presence_table.go index d53360427..112270628 100644 --- a/syncapi/storage/postgres/presence_table.go +++ b/syncapi/storage/postgres/presence_table.go @@ -72,7 +72,7 @@ const selectMaxPresenceSQL = "" + const selectPresenceAfter = "" + " SELECT id, user_id, presence, status_msg, last_active_ts" + " FROM syncapi_presence" + - " WHERE id > $1 ORDER BY last_active_ts DESC LIMIT $2" + " WHERE id > $1 ORDER BY id DESC, last_active_ts DESC LIMIT $2" type presenceStatements struct { upsertPresenceStmt *sql.Stmt diff --git a/syncapi/storage/sqlite3/presence_table.go b/syncapi/storage/sqlite3/presence_table.go index 4e4b04df5..63d2820ac 100644 --- a/syncapi/storage/sqlite3/presence_table.go +++ b/syncapi/storage/sqlite3/presence_table.go @@ -71,7 +71,7 @@ const selectMaxPresenceSQL = "" + const selectPresenceAfter = "" + " SELECT id, user_id, presence, status_msg, last_active_ts" + " FROM syncapi_presence" + - " WHERE id > $1 ORDER BY last_active_ts DESC LIMIT $2" + " WHERE id > $1 ORDER BY id DESC, last_active_ts DESC LIMIT $2" type presenceStatements struct { db *sql.DB diff --git a/syncapi/streams/stream_presence.go b/syncapi/streams/stream_presence.go index 2b4d896c6..432486f8d 100644 --- a/syncapi/streams/stream_presence.go +++ b/syncapi/streams/stream_presence.go @@ -135,6 +135,9 @@ func (p *PresenceStreamProvider) IncrementalSync( if presence.StreamPos > lastPos { lastPos = presence.StreamPos } + if len(req.Response.Presence.Events) == req.Filter.Presence.Limit { + break + } p.cache.Store(cacheKey, presence) }