aboutsummaryrefslogtreecommitdiff
path: root/matrix/matrix.go
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2020-05-10 02:28:32 +0300
committerTulir Asokan <tulir@maunium.net>2020-05-10 02:28:34 +0300
commit2cebe3b5dc0a17f46cb5e4122a16ed73e9e90d97 (patch)
treec5e0078630f339a0ccb627ce384dd891819fc527 /matrix/matrix.go
parent4e2cbf1e4fc40fb5c78c32567a0622a6ce63eeba (diff)
Move loaded history pointer to message view
When it was in the history manager, it wouldn't get unloaded when the room was unloaded. Hopefully fixes #136
Diffstat (limited to 'matrix/matrix.go')
-rw-r--r--matrix/matrix.go19
1 files changed, 10 insertions, 9 deletions
diff --git a/matrix/matrix.go b/matrix/matrix.go
index e2e182e..bff9bd2 100644
--- a/matrix/matrix.go
+++ b/matrix/matrix.go
@@ -966,18 +966,18 @@ func (c *Container) FetchMembers(room *rooms.Room) error {
}
// GetHistory fetches room history.
-func (c *Container) GetHistory(room *rooms.Room, limit int) ([]*muksevt.Event, error) {
- events, err := c.history.Load(room, limit)
+func (c *Container) GetHistory(room *rooms.Room, limit int, dbPointer uint64) ([]*muksevt.Event, uint64, error) {
+ events, newDBPointer, err := c.history.Load(room, limit, dbPointer)
if err != nil {
- return nil, err
+ return nil, dbPointer, err
}
if len(events) > 0 {
debug.Printf("Loaded %d events for %s from local cache", len(events), room.ID)
- return events, nil
+ return events, newDBPointer, nil
}
resp, err := c.client.Messages(room.ID, room.PrevBatch, "", 'b', limit)
if err != nil {
- return nil, err
+ return nil, dbPointer, err
}
debug.Printf("Loaded %d events for %s from server from %s to %s", len(resp.Chunk), room.ID, resp.Start, resp.End)
for i, evt := range resp.Chunk {
@@ -1002,13 +1002,14 @@ func (c *Container) GetHistory(room *rooms.Room, limit int) ([]*muksevt.Event, e
room.PrevBatch = resp.End
c.config.Rooms.Put(room)
if len(resp.Chunk) == 0 {
- return []*muksevt.Event{}, nil
+ return []*muksevt.Event{}, dbPointer, nil
}
- events, err = c.history.Prepend(room, resp.Chunk)
+ // TODO newDBPointer isn't accurate in this case yet, fix later
+ events, newDBPointer, err = c.history.Prepend(room, resp.Chunk)
if err != nil {
- return nil, err
+ return nil, dbPointer, err
}
- return events, nil
+ return events, dbPointer, nil
}
func (c *Container) GetEvent(room *rooms.Room, eventID id.EventID) (*muksevt.Event, error) {