51 lines
1.5 KiB
Dart
51 lines
1.5 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:tencent_cloud_chat_sdk/enum/message_elem_type.dart';
|
|
import 'package:tencent_cloud_chat_sdk/models/v2_tim_message.dart';
|
|
|
|
String parseMessageSummary(V2TimMessage msg) {
|
|
switch (msg.elemType) {
|
|
case MessageElemType.V2TIM_ELEM_TYPE_TEXT:
|
|
return msg.textElem?.text ?? '[文本消息]';
|
|
case MessageElemType.V2TIM_ELEM_TYPE_IMAGE:
|
|
return '[图片]';
|
|
case MessageElemType.V2TIM_ELEM_TYPE_SOUND:
|
|
return '[语音]';
|
|
case MessageElemType.V2TIM_ELEM_TYPE_VIDEO:
|
|
return '[视频]';
|
|
case MessageElemType.V2TIM_ELEM_TYPE_FILE:
|
|
return '[文件]';
|
|
case MessageElemType.V2TIM_ELEM_TYPE_LOCATION:
|
|
return '[位置]';
|
|
case MessageElemType.V2TIM_ELEM_TYPE_FACE:
|
|
return '[表情]';
|
|
case MessageElemType.V2TIM_ELEM_TYPE_CUSTOM:
|
|
return _parseCustomMessage(msg.customElem?.data);
|
|
case MessageElemType.V2TIM_ELEM_TYPE_MERGER:
|
|
return '[合并转发消息]';
|
|
case MessageElemType.V2TIM_ELEM_TYPE_GROUP_TIPS:
|
|
return '[群提示]';
|
|
default:
|
|
return '[未知消息类型]';
|
|
}
|
|
}
|
|
|
|
String _parseCustomMessage(String? data) {
|
|
if (data == null || data.isEmpty) return '[自定义消息]';
|
|
|
|
try {
|
|
final jsonData = json.decode(data);
|
|
final type = jsonData['type'];
|
|
switch (type) {
|
|
case 'interaction':
|
|
return '[互动] ${jsonData['action'] ?? ''}';
|
|
case 'forward':
|
|
return '[转发] ${jsonData['title'] ?? ''}';
|
|
default:
|
|
return '[自定义消息]';
|
|
}
|
|
} catch (_) {
|
|
return '[自定义消息]';
|
|
}
|
|
}
|