From 538029a5de21f168820de12edd4bc754d5be19c8 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 23 Dec 2020 14:48:23 +0530 Subject: [PATCH] [Stream Channel] Fix getReplies Signed-off-by: Sahil Kumar --- lib/src/stream_channel.dart | 59 +++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 12 deletions(-) diff --git a/lib/src/stream_channel.dart b/lib/src/stream_channel.dart index d5a4b030..be6cb4a5 100644 --- a/lib/src/stream_channel.dart +++ b/lib/src/stream_channel.dart @@ -134,6 +134,40 @@ class StreamChannelState extends State { return _queryBottomMessages(); } + //if (_queryMessageController.value == true || _paginationEnded) { + // return; + // } + // + // _queryMessageController.add(true); + // + // String firstId; + // if (widget.channel.state.threads.containsKey(parentId)) { + // final thread = widget.channel.state.threads[parentId]; + // + // if (thread != null && thread.isNotEmpty) { + // firstId = thread?.first?.id; + // } + // } + // + // final messageLimit = 50; + // return widget.channel + // .getReplies( + // parentId, + // PaginationParams( + // lessThan: firstId, + // limit: messageLimit, + // ), + // preferOffline: true, + // ) + // .then((res) { + // if (res.messages.isEmpty || res.messages.length < messageLimit) { + // _paginationEnded = true; + // } + // _queryMessageController.add(false); + // }).catchError((e, stack) { + // _queryMessageController.addError(e, stack); + // }); + /// Calls [channel.getReplies] updating [queryMessage] stream Future getReplies( String parentId, { @@ -143,23 +177,24 @@ class StreamChannelState extends State { if (_topPaginationEnded || _queryTopMessagesController.value) return; _queryTopMessagesController.add(true); - if (!channel.state.threads.containsKey(parentId)) { - return _queryTopMessagesController.add(false); + Message message; + if (channel.state.threads.containsKey(parentId)) { + final thread = channel.state.threads[parentId]; + if (thread.isNotEmpty) { + message = thread.first; + } } - final thread = channel.state.threads[parentId]; - - if (thread.isEmpty) return _queryTopMessagesController.add(false); - - final message = thread.first; - try { - final state = await queryBeforeMessage( - message.id, - limit: limit, + final response = await channel.getReplies( + parentId, + PaginationParams( + lessThan: message?.id, + limit: limit, + ), preferOffline: preferOffline, ); - if (state.messages.isEmpty || state.messages.length < limit) { + if (response.messages.isEmpty || response.messages.length < limit) { _topPaginationEnded = true; } _queryTopMessagesController.add(false);