V2TimMessage.fromJson constructor
V2TimMessage.fromJson(
- Map json
Implementation
V2TimMessage.fromJson(Map json) {
json = Utils.formatJson(json);
_messageConvType = json['message_conv_type'];
_messageConvID = json['message_conv_id'];
if (_messageConvType == ConversationType.V2TIM_GROUP) {
groupID = _messageConvID;
} else {
userID = _messageConvID;
}
sender = json['message_sender'];
_senderTinyID = json['message_sender_tiny_id'];
_receiverTinyID = json['message_receiver_tiny_id'];
priority = json['message_priority'];
_clientTime = json['message_client_time'];
_serverTime = json['message_server_time'];
if (_serverTime != null && _serverTime! > 0) {
timestamp = _serverTime;
} else {
timestamp = _clientTime ?? 0;
}
isSelf = json['message_is_from_self'];
_platform = json['message_platform'];
isRead = json['message_is_read'];
isOnlineOnly = json['message_is_online_msg'];
isPeerRead = json['message_is_peer_read'];
_receiptPeerRead = json['message_receipt_peer_read'];
needReadReceipt = json['message_need_read_receipt'];
isBroadcastMessage = json['message_is_broadcast_message'];
_messageHasSentReceipt = json['message_has_sent_receipt'];
_messageGroupReceiptReadCount = json['message_group_receipt_read_count'];
_messageGroupReceiptUnreadCount = json['message_group_receipt_unread_count'];
isSupportMessageExtension = json["message_support_message_extension"];
_messageVersion = json['message_version'];
status = json['message_status'];
msgID = json['message_msg_id'];
seq = json['message_seq']?.toString();
random = json['message_rand'];
localCustomInt = json['message_custom_int'];
localCustomData = json['message_custom_str'] ?? "";
cloudCustomData = json['message_cloud_custom_str'] ?? "";
isExcludedFromUnreadCount = json['message_is_excluded_from_unread_count'];
senderProfile = json['message_sender_profile'] != null ? V2TimUserInfo.fromJson(json['message_sender_profile']) : null;
nickName = senderProfile?.nickName;
faceUrl = senderProfile?.faceUrl;
if (senderProfile != null) {
friendRemark = json['message_sender_profile']['user_profile_friend_remark'];
}
isExcludedFromLastMessage = json['message_excluded_from_last_message'];
isExcludedFromContentModeration = json['message_excluded_from_content_moderation'];
_customModerationConfigurationID = json['message_custom_moderation_configuration_id'];
hasRiskContent = _riskTypeIdentified > 1 ? true : false;
_riskTypeIdentified = json['message_risk_type_identified'];
isDisableCloudMessagePreHook = json['message_disable_cloud_message_pre_hook'];
isDisableCloudMessagePostHook = json['message_disable_cloud_message_post_hook'];
revokeReason = json['message_revoke_reason'];
_revokerUserID = json['message_revoker_user_id'];
_revokerNickname = json['message_revoker_nick_name'];
_revokerFaceUrl = json['message_revoker_face_url'];
if (_revokerUserID != null) {
_revokerInfo = V2TimUserFullInfo();
_revokerInfo!.userID = _revokerUserID;
_revokerInfo!.nickName = _revokerNickname;
_revokerInfo!.faceUrl = _revokerFaceUrl;
}
_pinnerUserID = json['message_pinner_user_id'];
_pinnerNickname = json['message_pinner_nick_name'];
_pinnerRemark = json['message_pinner_friend_remark'];
_pinnerNameCard = json['message_pinner_name_card'];
_pinnerFaceUrl = json['message_pinner_face_url'];
targetGroupMemberList = json['message_target_group_member_array']?.cast<String>() ?? [];
groupAtUserList = json['message_group_at_user_array']?.cast<String>() ?? [];
senderGroupMemberInfo = V2TimGroupMemberInfo.fromJson(json['message_sender_group_member_info'] ?? {});
nameCard = senderGroupMemberInfo?.nameCard;
offlinePushInfo = json['message_offline_push_config'] != null ? OfflinePushInfo.fromJson(json['message_offline_push_config']) : null;
var jsonElemList = json["message_elem_array"] ?? List.empty(growable: true);
for (int elemIndex = 0; elemIndex < jsonElemList.length; ++elemIndex) {
var jsonElem = jsonElemList[elemIndex] as Map<String, dynamic>;
// elemType 和 elem 取第一个值作为消息的元素内容
int cElemType = jsonElem['elem_type'] ?? -1;
if (cElemType == CElemType.ElemText) {
var element = V2TimTextElem.fromJson(jsonElem);
if (elemIndex == 0) {
elemType = MessageElemType.V2TIM_ELEM_TYPE_TEXT;
textElem = element;
}
elemList.add(element);
} else if (cElemType == CElemType.ElemCustom) {
var element = V2TimCustomElem.fromJson(jsonElem);
if (elemIndex == 0) {
elemType = MessageElemType.V2TIM_ELEM_TYPE_CUSTOM;
customElem = element;
}
elemList.add(element);
} else if (cElemType == CElemType.ElemImage) {
var element = V2TimImageElem.fromJson(jsonElem);
if (elemIndex == 0) {
elemType = MessageElemType.V2TIM_ELEM_TYPE_IMAGE;
imageElem = element;
}
elemList.add(element);
} else if (cElemType == CElemType.ElemSound) {
var element = V2TimSoundElem.fromJson(jsonElem);
if (elemIndex == 0) {
elemType = MessageElemType.V2TIM_ELEM_TYPE_SOUND;
soundElem = element;
}
elemList.add(element);
} else if (cElemType == CElemType.ElemVideo) {
var element = V2TimVideoElem.fromJson(jsonElem);
if (elemIndex == 0) {
elemType = MessageElemType.V2TIM_ELEM_TYPE_VIDEO;
videoElem = element;
}
elemList.add(element);
} else if (cElemType == CElemType.ElemFile) {
var element = V2TimFileElem.fromJson(jsonElem);
if (elemIndex == 0) {
elemType = MessageElemType.V2TIM_ELEM_TYPE_FILE;
fileElem = element;
}
elemList.add(element);
} else if (cElemType == CElemType.ElemLocation) {
var element = V2TimLocationElem.fromJson(jsonElem);
if (elemIndex == 0) {
elemType = MessageElemType.V2TIM_ELEM_TYPE_LOCATION;
locationElem = element;
}
elemList.add(element);
} else if (cElemType == CElemType.ElemFace) {
var element = V2TimFaceElem.fromJson(jsonElem);
if (elemIndex == 0) {
elemType = MessageElemType.V2TIM_ELEM_TYPE_FACE;
faceElem = element;
}
elemList.add(element);
} else if (cElemType == CElemType.ElemGroupTips) {
var element = V2TimGroupTipsElem.fromJson(jsonElem);
if (elemIndex == 0) {
elemType = MessageElemType.V2TIM_ELEM_TYPE_GROUP_TIPS;
groupTipsElem = element;
}
elemList.add(element);
} else if (cElemType == CElemType.ElemGroupReport) {
var element = V2TimGroupReportElem.fromJson(jsonElem);
if (elemIndex == 0) {
elemType = MessageElemType.V2TIM_ELEM_TYPE_GROUP_REPORT;
groupReportElem = element;
}
elemList.add(element);
} else if (cElemType == CElemType.ElemMerge) {
var element = V2TimMergerElem.fromJson(jsonElem);
if (elemIndex == 0) {
elemType = MessageElemType.V2TIM_ELEM_TYPE_MERGER;
mergerElem = element;
}
elemList.add(element);
}
}
if (jsonElemList.length == 0) {
elemType = json['elem_type'] ?? -1;
}
if (elemList.length > 1) {
for (int i = 0; i < elemList.length - 1; ++i) {
elemList[i].nextElem = elemList[i + 1].toJson();
}
}
isForwardMessage = json['message_is_forward_message'];
progress = json['progress'];
id = json['id'];
if (msgID == null && id != null) {
msgID = id;
}
}