[Problem/Question]
// Detailed description of issue.
- MessageCollection을 initialize할 때 MessageListParams에 reverse를 true로 설정했습니다.
- MessageCollectionHandler에서 onMessageAdded 메서드가 호출되었을 때 MessageCollection.messageList에 reverse가 적용되지 않는 경우가 있습니다.
- messageInitialize 이벤트에서는 정상적으로 MessageCollection.messageList에 리버스된 메시지 리스트가 업데이트 되었습니다.
- eventMessageSent 이벤트에서는 보낸 메시지가 MessageCollection.messageList의 0번 인덱스에 정상적으로 업데이트 됩니다.
3. eventMessageReceived 이벤트에서는 받은 메시지가 MessageCollection.messageList의 0번 인덱스가 아닌 마지막 인덱스에 추가됩니다.
reverse 파라미터가 true인데 event에 따라 메시지가 추가되는 위치가 달라 혼란스럽습니다.
코드를 확인한 결과 CollectionManager의 Inner Class인 InternalGroupChannelHandlerForCollectionManager의 onMessageReceived 메서드에서 sendEventsToMessageCollection을 호출할 때 isReversedAddedMessages 파라미터가 전달되지 않아서인 것 같습니다
참고:
@override
void onMessageReceived(BaseChannel channel, BaseMessage message) async {
if (channel is GroupChannel) {
for (final messageCollection in _collectionManager.messageCollections) {
if (messageCollection.baseChannel.channelUrl == channel.channelUrl) {
_collectionManager.sendEventsToMessageCollection(
messageCollection: messageCollection,
baseChannel: channel,
eventSource: CollectionEventSource.eventMessageReceived,
sendingStatus: SendingStatus.succeeded,
addedMessages: [message],
);
break;
}
}
}
}
MessageCollection.messageList를 사용하지 않고 MessageCollectionHandler를 통해 별도의 messageList를 관리하면 해결할 수 있긴 합니다만 이 부분 버그인지 의도된 부분인지 궁금합니다.