From 89d03be3013ff6e5048388027a1e44c91e09d825 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 7 May 2025 19:02:38 +0200 Subject: [PATCH 1/2] fix(persistence): improve pagination handling by clamping offset --- .../lib/src/stream_chat_persistence_client.dart | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart b/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart index 2ab392b60..c76991948 100644 --- a/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart +++ b/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart @@ -281,13 +281,15 @@ class StreamChatPersistenceClient extends ChatPersistenceClient { channelStates.sort(channelStateSort.compare); } - final offset = paginationParams?.offset; - if (offset != null && offset > 0 && channelStates.isNotEmpty) { - channelStates.removeRange(0, offset); + // Apply offset + if (paginationParams?.offset case final paginationOffset?) { + final clampedOffset = paginationOffset.clamp(0, channelStates.length); + channelStates.removeRange(0, clampedOffset); } - if (paginationParams?.limit != null) { - return channelStates.take(paginationParams!.limit).toList(); + // Apply limit + if (paginationParams?.limit case final paginationLimit?) { + return channelStates.take(paginationLimit).toList(); } return channelStates; From 8113449a3686f2f78d57e1bd8c667312ebb358ad Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 7 May 2025 19:10:29 +0200 Subject: [PATCH 2/2] chore: update CHANGELOG.md --- packages/stream_chat_persistence/CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/stream_chat_persistence/CHANGELOG.md b/packages/stream_chat_persistence/CHANGELOG.md index 84deaffca..074d2218b 100644 --- a/packages/stream_chat_persistence/CHANGELOG.md +++ b/packages/stream_chat_persistence/CHANGELOG.md @@ -1,3 +1,8 @@ +## Upcoming + +- Fixed an issue in the `getChannelStates` method where `paginationParams.offset` greater than the + available channel count would cause an exception. The method now properly handles this edge case. + ## 9.9.0 - Added support for `User.teamsRole` field.