getMessagePayload static method
Implementation
static MessagePayload? getMessagePayload(V2TimMessage imMessage) {
switch (imMessage.elemType) {
case MessageElemType.V2TIM_ELEM_TYPE_TEXT:
String? translateLanguage;
Map<String, String>? translatedText;
final localCustomData = imMessage.localCustomData;
if (localCustomData != null && localCustomData.isNotEmpty) {
final json = jsonData2Dictionary(localCustomData);
if (json != null) {
final translatedTextMap = json['text_translation'] as Map<String, dynamic>?;
if (translatedTextMap != null && translatedTextMap.isNotEmpty) {
translatedText = translatedTextMap.map((key, value) => MapEntry(key, value.toString()));
}
translateLanguage = json['text_translation_language'] as String?;
}
}
return TextMessagePayload(
text: imMessage.textElem?.text ?? '',
translateLanguage: translateLanguage,
translatedText: translatedText,
);
case MessageElemType.V2TIM_ELEM_TYPE_IMAGE:
if (imMessage.imageElem != null) {
final payload = ImageMessagePayload();
if (imMessage.imageElem?.imageList != null) {
for (var image in imMessage.imageElem!.imageList!) {
if (image?.type == V2TIM_IMAGE_TYPE.V2TIM_IMAGE_TYPE_ORIGIN) {
payload.originalImageSize = image?.size ?? 0;
payload.originalImageWidth = image?.width ?? 0;
payload.originalImageHeight = image?.height ?? 0;
payload.originalImageURL = image?.url;
final result =
getActualMediaPath(MessageType.image, imMessage.imageElem!.path, image?.uuid ?? "", "origin_");
if (result[localExistKey]) {
payload.originalImagePath = result[filePathKey];
}
} else if (image?.type == V2TIM_IMAGE_TYPE.V2TIM_IMAGE_TYPE_THUMB) {
payload.thumbImageURL = image?.url;
final result =
getActualMediaPath(MessageType.image, image?.localUrl ?? "", image?.uuid ?? "", "thumb_");
if (result[localExistKey]) {
payload.thumbImagePath = result[filePathKey];
}
} else if (image?.type == V2TIM_IMAGE_TYPE.V2TIM_IMAGE_TYPE_LARGE) {
payload.largeImageURL = image?.url;
final result =
getActualMediaPath(MessageType.image, image?.localUrl ?? "", image?.uuid ?? '', "large_");
if (result[localExistKey]) {
payload.largeImagePath = result[filePathKey];
}
}
}
}
return payload;
}
break;
case MessageElemType.V2TIM_ELEM_TYPE_SOUND:
if (imMessage.soundElem != null) {
String? audioPath;
final pathResult = getActualMediaPath(
MessageType.audio,
imMessage.soundElem!.path,
imMessage.soundElem!.UUID ?? '',
null,
);
if (pathResult[localExistKey]) {
audioPath = pathResult[filePathKey];
}
String? asrText;
final localCustomData = imMessage.localCustomData;
if (localCustomData != null && localCustomData.isNotEmpty) {
final json = jsonData2Dictionary(localCustomData);
if (json != null) {
asrText = json['voice_to_text'] as String?;
}
}
return AudioMessagePayload(
audioSize: imMessage.soundElem?.dataSize ?? 0,
audioDuration: imMessage.soundElem?.duration ?? 0,
audioPath: audioPath,
audioURL: imMessage.soundElem?.url,
asrText: asrText,
);
}
break;
case MessageElemType.V2TIM_ELEM_TYPE_FILE:
if (imMessage.fileElem != null) {
String? filePath;
final pathResult = getActualMediaPath(
MessageType.file,
imMessage.fileElem!.path,
imMessage.fileElem!.UUID ?? '',
null,
);
if (pathResult[localExistKey]) {
filePath = pathResult[filePathKey];
}
return FileMessagePayload(
fileName: imMessage.fileElem?.fileName,
fileSize: imMessage.fileElem?.fileSize ?? 0,
filePath: filePath,
fileURL: imMessage.fileElem?.url,
);
}
break;
case MessageElemType.V2TIM_ELEM_TYPE_VIDEO:
if (imMessage.videoElem != null) {
String? videoSnapshotPath;
final snapshotResult = getActualMediaPath(
MessageType.video,
imMessage.videoElem!.snapshotPath,
imMessage.videoElem!.snapshotUUID ?? '',
null,
);
if (snapshotResult[localExistKey]) {
videoSnapshotPath = snapshotResult[filePathKey];
}
String? videoPath;
final videoResult = getActualMediaPath(
MessageType.video,
imMessage.videoElem!.videoPath,
imMessage.videoElem!.UUID ?? '',
null,
);
if (videoResult[localExistKey]) {
videoPath = videoResult[filePathKey];
}
return VideoMessagePayload(
videoSnapshotWidth: imMessage.videoElem?.snapshotWidth ?? 0,
videoSnapshotHeight: imMessage.videoElem?.snapshotHeight ?? 0,
videoSnapshotPath: videoSnapshotPath,
videoSnapshotURL: imMessage.videoElem?.snapshotUrl,
videoType: imMessage.videoElem?.videoType,
videoSize: imMessage.videoElem?.videoSize ?? 0,
videoDuration: imMessage.videoElem?.duration ?? 0,
videoPath: videoPath,
videoURL: imMessage.videoElem?.videoUrl,
);
}
break;
case MessageElemType.V2TIM_ELEM_TYPE_FACE:
if (imMessage.faceElem != null) {
return FaceMessagePayload(
faceIndex: imMessage.faceElem?.index ?? 0,
faceData: imMessage.faceElem?.data,
);
}
break;
case MessageElemType.V2TIM_ELEM_TYPE_CUSTOM:
if (imMessage.customElem != null) {
return CustomMessagePayload(
customData: imMessage.customElem!.data ?? '',
description: imMessage.customElem!.desc ?? '',
extensionInfo: imMessage.customElem!.extension ?? '',
);
}
break;
case MessageElemType.V2TIM_ELEM_TYPE_GROUP_TIPS:
if (imMessage.groupTipsElem != null) {
return TipsMessagePayload(groupTips: ChatUtil.convertToSystemInfoFromGroupTips(imMessage.groupTipsElem!));
}
break;
case MessageElemType.V2TIM_ELEM_TYPE_MERGER:
if (imMessage.mergerElem != null) {
return MergedMessagePayload(
title: imMessage.mergerElem!.title ?? '',
abstractList: imMessage.mergerElem!.abstractList,
);
}
break;
case MessageElemType.V2TIM_ELEM_TYPE_STREAM:
if (imMessage.streamElem != null) {
final streamElem = imMessage.streamElem!;
return StreamMessagePayload(
markdown: streamElem.markdown ?? '',
data: streamElem.data ?? '',
isStreamEnded: streamElem.isStreamEnded ?? false,
);
}
break;
default:
return null;
}
return null;
}