diff --git a/lib/src/Room.dart b/lib/src/Room.dart index 93bf3669..be7291bb 100644 --- a/lib/src/Room.dart +++ b/lib/src/Room.dart @@ -300,6 +300,9 @@ class Room { if (resp is ErrorResponse) return; + prev_batch = resp["end"]; + client.store?.storeRoomPrevBatch(this); + if (!(resp["chunk"] is List && resp["chunk"].length > 0 && resp["end"] is String)) return; diff --git a/lib/src/Store.dart b/lib/src/Store.dart index fdb436cf..d66f0478 100644 --- a/lib/src/Store.dart +++ b/lib/src/Store.dart @@ -149,6 +149,12 @@ class Store { return null; } + Future storeRoomPrevBatch(Room room) async { + await _db.rawUpdate( + "UPDATE Rooms SET prev_batch=? WHERE id=?", [room.prev_batch, room.id]); + return null; + } + /// Stores a RoomUpdate object in the database. Must be called inside of /// [transaction]. Future storeRoomUpdate(RoomUpdate roomUpdate) { diff --git a/test/Timeline_test.dart b/test/Timeline_test.dart index 0af61dd9..f25383e2 100644 --- a/test/Timeline_test.dart +++ b/test/Timeline_test.dart @@ -198,6 +198,7 @@ void main() { expect(timeline.events[6].id, "1143273582443PhrSn:example.org"); expect(timeline.events[7].id, "2143273582443PhrSn:example.org"); expect(timeline.events[8].id, "3143273582443PhrSn:example.org"); + expect(room.prev_batch, "t47409-4357353_219380_26003_2265"); }); }); }