flutter/lib/utils/parse_message_summary.dart

53 lines
1.7 KiB
Dart
Raw Normal View History

2025-07-21 15:46:30 +08:00
import 'dart:convert';
2025-08-21 10:50:38 +08:00
import 'package:loopin/models/summary_type.dart';
2025-07-21 15:46:30 +08:00
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:
2025-08-21 10:50:38 +08:00
return '[文件]'; // 先不做
2025-07-21 15:46:30 +08:00
case MessageElemType.V2TIM_ELEM_TYPE_LOCATION:
2025-08-21 10:50:38 +08:00
return '[位置]'; // 先不做
2025-07-21 15:46:30 +08:00
case MessageElemType.V2TIM_ELEM_TYPE_FACE:
return '[表情]';
case MessageElemType.V2TIM_ELEM_TYPE_CUSTOM:
2025-08-21 10:50:38 +08:00
return _parseCustomMessage(msg);
2025-07-21 15:46:30 +08:00
case MessageElemType.V2TIM_ELEM_TYPE_MERGER:
return '[合并转发消息]';
case MessageElemType.V2TIM_ELEM_TYPE_GROUP_TIPS:
return '[群提示]';
default:
2025-08-21 10:50:38 +08:00
return '[未知消息类型1]';
2025-07-21 15:46:30 +08:00
}
}
2025-08-21 10:50:38 +08:00
String _parseCustomMessage(V2TimMessage? msg) {
if (msg == null) return '[null]';
final sum = msg.cloudCustomData;
2025-07-21 15:46:30 +08:00
try {
2025-08-21 10:50:38 +08:00
switch (sum) {
case SummaryType.hongbao:
final hbData = jsonDecode(msg.customElem!.data!);
return '[红包]${hbData['remark']}';
case SummaryType.shareTuangou:
return '[分享商品]';
case SummaryType.shareVideo:
return '[分享视频]';
2025-07-21 15:46:30 +08:00
default:
2025-08-21 10:50:38 +08:00
return '[未知消息类型2]';
2025-07-21 15:46:30 +08:00
}
} catch (_) {
2025-08-21 10:50:38 +08:00
return '[未知消息类型3]';
2025-07-21 15:46:30 +08:00
}
}