getMessageModel method

WKMessageContent? getMessageModel(
  1. int type,
  2. dynamic json
)

Implementation

WKMessageContent? getMessageModel(int type, dynamic json) {
  WKMessageContent? content;
  if (_msgContentList.containsKey(type)) {
    var messageCreateCallback = _msgContentList[type];
    if (messageCreateCallback != null) {
      content = messageCreateCallback(json);
    }
  }
  content ??= WKUnknownContent();
  // 回复
  var replyJson = json['reply'];
  if (replyJson != null) {
    var reply = WKReply().decode(replyJson);
    content.reply = reply;
  }
  // var entities = WKDBConst.readString(json, 'entities');
  var jsonArray = json['entities'];
  if (jsonArray != null && jsonArray is List) {
    // var jsonArray = jsonDecode(entities);
    List<WKMsgEntity> list = [];
    for (var entityJson in jsonArray) {
      WKMsgEntity entity = WKMsgEntity();
      entity.type = WKDBConst.readString(entityJson, 'type');
      entity.offset = WKDBConst.readInt(entityJson, 'offset');
      entity.length = WKDBConst.readInt(entityJson, 'length');
      entity.value = WKDBConst.readString(entityJson, 'value');
      list.add(entity);
    }
    content.entities = list;
  }
  // 解析艾特
  var mentionJson = json['mention'];
  if (mentionJson != null) {
    var mentionInfo = WKMentionInfo();
    var mentionAll = WKDBConst.readInt(mentionJson, 'all');
    var uidList = mentionJson['uids'];
    if (uidList != null && uidList is List) {
      List<String> uids = [];
      for (var uid in uidList) {
        uids.add(uid);
        if (uid == WKIM.shared.options.uid) {
          mentionInfo.isMentionMe = true;
        }
      }
      mentionInfo.uids = uids;
    }
    if (mentionAll == 1) {
      mentionInfo.mentionAll = true;
      mentionInfo.isMentionMe = true;
    }
    content.mentionInfo = mentionInfo;
  }
  return content;
}