next method
Gets the list of next items.
Implementation
@override
Future<List<BaseMessage>> next() async {
sbLog.i(StackTrace.current);
if (isLoading) throw QueryInProgressException();
if (!hasNext) return [];
isLoading = true;
final params = MessageListParams()
..previousResultSize = limit
..reverse = reverse
..messageType = messageTypeFilter
..customTypes = customTypesFilter
..senderIds = senderIdsFilter
..showSubChannelMessagesOnly = showSubChannelMessagesOnly
// BaseMessageFetchParams
..includeMetaArray = includeMetaArray
..includeReactions = includeReactions
..includeThreadInfo = includeThreadInfo
..includeParentMessageInfo = includeParentMessageInfo
..replyType = replyType;
List<BaseMessage> messages;
try {
final res = await chat.apiClient.send<ChannelMessagesGetResponse>(
ChannelMessagesGetRequest(
chat,
channelType: channelType,
channelUrl: channelUrl,
params: params.toJson(),
timestamp: messageTimestamp ?? 0,
),
);
messages = List<BaseMessage>.from(res.messages);
if (messages.isNotEmpty) {
final oldestMessage = reverse ? messages.last : messages.first;
messageTimestamp = oldestMessage.createdAt;
} else {
messageTimestamp = null;
}
hasNext = messages.length == limit;
} catch (_) {
isLoading = false;
rethrow;
}
isLoading = false;
return messages;
}