Sometimes, the `previousResultSize` and `nextResultSize` are disregarded in the `GroupChannel.startCollection(initPolicy:)` function

[Problem/Question]
The Group channel collection’s startCollection function does not respect the previousResultSize or nextResultSize. Also, the chat messages from the API is returned after 10 seconds!


// If problem, please fill out the below. If question, please delete.
[SDK Version]
4.8.5

[Reproduction Steps]
I am not sure how to reproduce the case, but it happens sometimes.

Code:

collection?.dispose()
let params = MessageListParams()
params.previousResultSize = 20
params.nextResultSize = 20
params.reverse = false
params.isInclusive = false
params.messageTypeFilter = .all

collection = SendbirdChat.createMessageCollection(channel: channel, startingPoint: .max, params: params)
collection?.delegate = self

collection?.startCollection(initPolicy: .cacheAndReplaceByApi, cacheResultHandler: { [weak self] messages, error in
    guard let messages = messages else {
        if let error = error {
            self?.log("💬 The messages could not be fetched. Error: \(error)", level: .error)
        } else {
            self?.log("💬 The messages could not be fetched. Unknown error!", level: .error)
        }

        return
    }

    self?.log("💬 FromCache \(messages.count)", level: .info)
    self?.datasource.insert(by: messages)
}, apiResultHandler: { [weak self] messages, error in
    guard let messages = messages else {
        if let error = error {
            self?.log("💬 The messages could not be fetched. Error: \(error)", level: .error)
        } else {
            self?.log("💬 The messages could not be fetched. Unknown error!", level: .error)
        }

        return
    }

    self?.log("💬 FromAPI \(messages.count)", level: .info)
    self?.datasource.cleanMessages()
    self?.datasource.insert(by: messages)
})

Here are the logs:

2023-06-22 12:23:35.406325+0530 App[29323:9683053] [ChatListPresenter.channelCollection(_:context:updatedChannels:)#92] 💬📜 Updated Channels: 1
2023-06-22 12:24:11.256483+0530 App[29323:9683179] [ChatViewController.refreshMessages()#163] 💬 FromCache 20
2023-06-22 12:24:20.707312+0530 App[29323:9683241] [ChatListPresenter.channelCollection(_:context:updatedChannels:)#92] 💬📜 Updated Channels: 1
2023-06-22 12:24:21.324414+0530 App[29323:9683241] [ChatViewController.refreshMessages()#183] 💬 FromAPI 67
1 Like

Hi Sunil,

While using MessageCollection() by default startingPoint parameter is used as reference point of message retrieval for a chat view which we apply for previousResultSize and nextResultSize. With that said if your channel doesn’t have messages in either direction, we fetch all messages as per default limit.

Hope this is clear, if you are still facing any issues with it kindly share a brief context about it and I’m happy to look into it.