diff --git a/packages/stream_chat_persistence/CHANGELOG.md b/packages/stream_chat_persistence/CHANGELOG.md index 64f0a502..063c6e8f 100644 --- a/packages/stream_chat_persistence/CHANGELOG.md +++ b/packages/stream_chat_persistence/CHANGELOG.md @@ -2,6 +2,10 @@ - Reintroduce support for experimental indexedDB on Web. +🐞 Fixed + +- Fix offline message pagination. + ## 5.0.0 - Included the changes from version [4.3.0](#430) and [4.4.0](#440). diff --git a/packages/stream_chat_persistence/lib/src/dao/message_dao.dart b/packages/stream_chat_persistence/lib/src/dao/message_dao.dart index ccaefced..fa69fa0c 100644 --- a/packages/stream_chat_persistence/lib/src/dao/message_dao.dart +++ b/packages/stream_chat_persistence/lib/src/dao/message_dao.dart @@ -1,3 +1,5 @@ +import 'dart:math'; + import 'package:drift/drift.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat_persistence/src/db/drift_chat_database.dart'; @@ -170,7 +172,9 @@ class MessageDao extends DatabaseAccessor } } if (messagePagination?.limit != null) { - return msgList.take(messagePagination!.limit).toList(); + return msgList + .skip(max(0, msgList.length - messagePagination!.limit)) + .toList(); } } return msgList; diff --git a/packages/stream_chat_persistence/test/src/dao/message_dao_test.dart b/packages/stream_chat_persistence/test/src/dao/message_dao_test.dart index b31884fc..ca98d622 100644 --- a/packages/stream_chat_persistence/test/src/dao/message_dao_test.dart +++ b/packages/stream_chat_persistence/test/src/dao/message_dao_test.dart @@ -382,8 +382,8 @@ void main() { messagePagination: pagination, ); expect(fetchedMessages.length, limit); - expect(fetchedMessages.first.id, greaterThanOrEqual); - expect(fetchedMessages.last.id != lessThan, true); + expect(fetchedMessages.last.id, 'testMessageId${cid}24'); + expect(fetchedMessages.first.id != lessThan, true); }); test('updateMessages', () async {