getMessageListV2ByLastMessage method

Future<V2TimValueCallback<V2TimMessageListResult>> getMessageListV2ByLastMessage(
  1. dynamic getMsgListParams
)

Implementation

Future<V2TimValueCallback<V2TimMessageListResult>> getMessageListV2ByLastMessage(dynamic getMsgListParams) async {
  // try {

  final res = await wrappedPromiseToFuture(timeweb!.getMessageList(getMsgListParams));
  final code = res.code;
  if (code == 0) {
    final resMap = jsToMap(res.data);
    final List messageList = List.from(resMap['messageList']);
    final bool isCompleted = resMap["isCompleted"];
    final historyMessageListPromises = messageList.reversed.skipWhile((value) => jsToMap(value)["isDeleted"]).map((element) async {
      final message = jsToMap(element);
      if (message['type'] == MsgType.MSG_MERGER) {
        mergerMsgList.add(element);
      }

      final responses = await V2TIMMessage.convertMessageFromWebToDart(element);
      return responses;
    }).toList();
    final historyMessageList = await Future.wait(historyMessageListPromises);
    final res2dart = Map<String, dynamic>.from({});
    res2dart["isFinished"] = isCompleted;
    res2dart["messageList"] = historyMessageList;
    return CommonUtils.returnSuccess<V2TimMessageListResult>(
      res2dart,
    );
  } else {
    return CommonUtils.returnErrorForValueCb("获取历史消息失败");
  }
  // } catch (error) {
  //   return CommonUtils.returnError(error);
  // }
}