flutter/lib/utils/parse_message_summary.dart
2025-07-21 15:46:30 +08:00

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 '[自定义消息]';
}
}