queryMessageListEx method

  1. @override
Future<NIMResult<List<ChatMessage>>> queryMessageListEx(
  1. NIMMessage anchor,
  2. QueryDirection direction,
  3. int limit
)
override

Implementation

@override
Future<NIMResult<List<ChatMessage>>> queryMessageListEx(
    NIMMessage anchor, QueryDirection direction, int limit) async {
  var msgRes = await NimCore.instance.messageService
      .queryMessageListEx(anchor, direction, limit);

  if (msgRes.isSuccess && msgRes.data != null) {
    var pinRes = await NimCore.instance.messageService
        .queryMessagePinForSession(anchor.sessionId!, anchor.sessionType!);
    if (pinRes.isSuccess && pinRes.data != null) {
      var pinList = pinRes.data!;
      return NIMResult(
          msgRes.code,
          msgRes.data!.map((msg) {
            var pin = pinList
                .firstWhereOrNull((element) => _isSameMessage(msg, element));
            return ChatMessage(msg, pinOption: pin);
          }).toList(),
          msgRes.errorDetails);
    } else {
      return NIMResult(
          msgRes.code,
          msgRes.data!.map((e) => ChatMessage(e)).toList(),
          msgRes.errorDetails);
    }
  } else {
    return NIMResult(msgRes.code, null, msgRes.errorDetails);
  }
}