From 442fdac4d5b949e556e94b0be53f2208709e8bf3 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sat, 22 Feb 2020 00:03:57 +0200 Subject: Enable lazy loading of members --- matrix/matrix.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'matrix/matrix.go') diff --git a/matrix/matrix.go b/matrix/matrix.go index f0009bc..d3edde5 100644 --- a/matrix/matrix.go +++ b/matrix/matrix.go @@ -834,6 +834,18 @@ func (c *Container) LeaveRoom(roomID string) error { return nil } +func (c *Container) FetchMembers(room *rooms.Room) error { + members, err := c.client.Members(room.ID, mautrix.ReqMembers{At: room.LastPrevBatch}) + if err != nil { + return err + } + for _, evt := range members.Chunk { + room.UpdateState(evt) + } + room.MembersFetched = true + return nil +} + // GetHistory fetches room history. func (c *Container) GetHistory(room *rooms.Room, limit int) ([]*event.Event, error) { events, err := c.history.Load(room, limit) @@ -849,6 +861,9 @@ func (c *Container) GetHistory(room *rooms.Room, limit int) ([]*event.Event, err return nil, err } debug.Printf("Loaded %d events for %s from server from %s to %s", len(resp.Chunk), room.ID, resp.Start, resp.End) + for _, evt := range resp.State { + room.UpdateState(evt) + } room.PrevBatch = resp.End c.config.Rooms.Put(room) if len(resp.Chunk) == 0 { -- cgit v1.2.3