diff --git a/lib/src/room.dart b/lib/src/room.dart index 8db6686a..894be747 100644 --- a/lib/src/room.dart +++ b/lib/src/room.dart @@ -1140,7 +1140,6 @@ class Room { void Function(int index)? onRemove, void Function(int insertID)? onInsert, void Function()? onUpdate, - void Function(int count)? onHistoryReceived, }) async { await postLoad(); var events; @@ -1170,7 +1169,6 @@ class Room { onRemove: onRemove, onInsert: onInsert, onUpdate: onUpdate, - onHistoryReceived: onHistoryReceived, ); if (client.database == null) { await requestHistory(historyCount: 10); diff --git a/lib/src/timeline.dart b/lib/src/timeline.dart index 7559a487..f82cf4a0 100644 --- a/lib/src/timeline.dart +++ b/lib/src/timeline.dart @@ -36,7 +36,6 @@ class Timeline { final void Function(int index)? onChange; final void Function(int index)? onInsert; final void Function(int index)? onRemove; - final void Function(int count)? onHistoryReceived; StreamSubscription? sub; StreamSubscription? roomSub; @@ -87,16 +86,19 @@ class Timeline { ); if (eventsFromStore != null && eventsFromStore.isNotEmpty) { events.addAll(eventsFromStore); - onHistoryReceived?.call(eventsFromStore.length); + final startIndex = events.length - eventsFromStore.length; + final endIndex = events.length; + for (var i = startIndex; i < endIndex; i++) { + onInsert?.call(i); + } } else { Logs().v('No more events found in the store. Request from server...'); - final count = await room.requestHistory( + await room.requestHistory( historyCount: historyCount, onHistoryReceived: () { _collectHistoryUpdates = true; }, ); - onHistoryReceived?.call(count); } } finally { _collectHistoryUpdates = false; @@ -112,7 +114,6 @@ class Timeline { this.onChange, this.onInsert, this.onRemove, - this.onHistoryReceived, }) : events = events ?? [] { sub = room.client.onEvent.stream.listen(_handleEventUpdate); @@ -338,8 +339,8 @@ class Timeline { } else { index = events.firstIndexWhereNotError; events.insert(index, newEvent); - onInsert?.call(index); } + onInsert?.call(index); addAggregatedEvent(newEvent); } diff --git a/test/timeline_test.dart b/test/timeline_test.dart index 0f4d2672..56f0ef74 100644 --- a/test/timeline_test.dart +++ b/test/timeline_test.dart @@ -31,7 +31,6 @@ void main() { final insertList = []; final changeList = []; final removeList = []; - final historyRequestList = []; var olmEnabled = true; late Client client; @@ -60,7 +59,6 @@ void main() { onInsert: insertList.add, onChange: changeList.add, onRemove: removeList.add, - onHistoryReceived: historyRequestList.add, ); }); @@ -293,8 +291,7 @@ void main() { await Future.delayed(Duration(milliseconds: 50)); expect(updateCount, 20); - expect(insertList, [0, 0, 0, 0, 0, 0, 1, 2, 0]); - expect(historyRequestList, []); + expect(insertList, [0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 2]); expect(timeline.events.length, 3); expect(timeline.events[0].eventId, '3143273582443PhrSn:example.org'); expect(timeline.events[1].eventId, '2143273582443PhrSn:example.org');