convertToUIMessage static method

MessageInfo convertToUIMessage(
  1. V2TimMessage imMessage
)

Implementation

static MessageInfo convertToUIMessage(V2TimMessage imMessage) {
  MessageInfo message = MessageInfo();
  message.msgID = imMessage.msgID ?? "";
  message.status = convertToUIMessageStatus(imMessage);

  MessageSenderInfo sender = MessageSenderInfo();
  sender.userID = imMessage.sender ?? "";
  sender.nickname = imMessage.nickName;
  sender.avatarURL = imMessage.faceUrl;
  sender.friendRemark = imMessage.friendRemark;
  sender.nameCard = imMessage.nameCard;
  message.from = sender;

  message.isSentBySelf = imMessage.isSelf ?? false;
  message.to =
      (imMessage.userID != null && imMessage.userID!.isNotEmpty) ? imMessage.userID! : (imMessage.groupID ?? '');
  message.conversationType = (imMessage.groupID != null && imMessage.groupID!.isNotEmpty)
      ? ConversationType.group
      : (imMessage.userID != null && imMessage.userID!.isNotEmpty)
          ? ConversationType.c2c
          : ConversationType.unknown;
  message.timestamp = imMessage.timestamp;
  message.sequence = imMessage.seq != null ? int.tryParse(imMessage.seq!) : null;
  message.needReadReceipt = imMessage.needReadReceipt ?? false;
  message.isExtensionEnabled = imMessage.isSupportMessageExtension ?? false;
  message.atUserList = imMessage.groupAtUserList ?? [];
  message.messageType = getMessageType(imMessage);
  message.messagePayload = getMessagePayload(imMessage);

  // For revoked messages, set revokerInfo/revokeReason on the MessageInfo
  if (message.status == MessageStatus.revoked) {
    applyRevokeInfo(message, imMessage, null, null);
  }

  message.rawMessage = imMessage;

  final v2QuoteInfo = imMessage.quoteInfo;
  if (v2QuoteInfo != null && (v2QuoteInfo.msgID?.isNotEmpty ?? false)) {
    message.quoteInfo = MessageQuoteInfo(
      msgID: v2QuoteInfo.msgID!,
      timestamp: v2QuoteInfo.messageTime ?? 0,
      sequence: v2QuoteInfo.messageSequence ?? 0,
    );
  }

  return message;
}