180 lines
6.5 KiB
Dart
180 lines
6.5 KiB
Dart
import 'dart:convert';
|
||
|
||
import 'package:loopin/models/notify_message.type.dart';
|
||
import 'package:loopin/models/summary_type.dart';
|
||
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);
|
||
case MessageElemType.V2TIM_ELEM_TYPE_MERGER:
|
||
return '[合并转发消息]';
|
||
case MessageElemType.V2TIM_ELEM_TYPE_GROUP_TIPS:
|
||
return '[群提示]';
|
||
default:
|
||
return '[未知消息类型1]';
|
||
}
|
||
}
|
||
|
||
// newFoucs, //新的关注
|
||
// systemNotify, // 系统->通知
|
||
// systemReport, // 系统->举报下架(视频,视频评论)
|
||
// systemCheck, // 系统->审核结果(复审,驳回 ,通过)
|
||
// systemPush, //系统->推广类的
|
||
// interactionComment, //互动->评论
|
||
// interactionAt, //互动->视频评论中的@
|
||
// interactionLike, //互动->点赞
|
||
// interactionReply, //互动->评论回复
|
||
// orderRecharge, //订单->充值 online
|
||
// orderPay, //订单->订单交易成功通知 online
|
||
// orderRefund, //订单->退款结果通知
|
||
// groupNotifyCheck, //群通知->进群申请 online
|
||
// groupNotifyAccpet, // 群通知->进群审核审核通过 online
|
||
// groupNotifyFail, // 群通知->进群审核审核拒绝 online
|
||
// groupNotifyLeaveUp, // 群通知->群升级为达人群通知
|
||
String _parseCustomMessage(V2TimMessage? msg) {
|
||
if (msg == null) return '[null]';
|
||
final sum = msg.cloudCustomData;
|
||
final elment = msg.customElem; // 所有服务端发送的通知消息都走【自定义消息类型】
|
||
try {
|
||
switch (sum) {
|
||
case SummaryType.hongbao:
|
||
final hbData = jsonDecode(msg.customElem!.data!);
|
||
return '[红包]${hbData['remark']}';
|
||
case SummaryType.shareTuangou:
|
||
return '[分享商品]';
|
||
case SummaryType.shareVideo:
|
||
return '[分享视频]';
|
||
// 解析服务端通知类的
|
||
/// [des]显示的文本内容
|
||
/// [data] json数据
|
||
/// 名称firstFrameImg:先取cover,如果没有在取firstFrameImg
|
||
case NotifyMessageTypeConstants.newFoucs:
|
||
// 关注
|
||
|
||
///发起关注人的[userID],
|
||
///发起关注人的昵称[nickName],
|
||
///发起关注人的头像地址[faceUrl],
|
||
///------
|
||
///客户端检测发起关注人与本人的关注关系
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.systemNotify:
|
||
|
||
///系统级别的没有就先不做
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.systemReport:
|
||
// 视频举报
|
||
|
||
///先只处理视频,评论的先不管
|
||
///被举报的视频[vlogID],
|
||
///被举报的视频标题[title],
|
||
///被举报的视频首帧图[firstFrameImg]
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.systemCheck:
|
||
// 视频审核
|
||
|
||
///视频审核结果通知 通过还是驳回
|
||
///被审核的视频[vlogID],
|
||
///被审核的视频标题[title],
|
||
///被审核的视频首帧图[firstFrameImg]
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.systemPush:
|
||
|
||
///系统推广类的先不管了
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.interactionComment:
|
||
// 评论视频
|
||
|
||
/// 发起评论人的[userID]
|
||
/// 发起评论人的头像[faceUrl]
|
||
/// 发起评论人的[nickName]
|
||
/// 评论的内容[comment]
|
||
/// 评论的id[commentID]
|
||
/// 被评论的视频[vlogID]
|
||
/// 被评论的视频首帧图[firstFrameImg]
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.interactionAt:
|
||
// 视频评论中@互关好友
|
||
|
||
/// 发起@人的[userID]
|
||
/// 发起@人的[nickName]
|
||
/// 发起@人的头像[faceUrl]
|
||
/// 关联视频的首帧图[firstFrameImg]
|
||
/// 关联视频的[vlogID]
|
||
/// 评论的id[commentID]
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.interactionLike:
|
||
// 点赞
|
||
|
||
/// 发起点赞人的[userID]
|
||
/// 发起点赞人的头像[faceUrl]
|
||
/// 发起点赞人的[nickName]
|
||
/// 被点赞视频的[vlogID]
|
||
/// 被点赞视频的封面图[firstFrameImg]
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.interactionReply:
|
||
// 回复评论
|
||
/// 回复人的[userID]
|
||
/// 回复人的[faceUrl]
|
||
/// 回复人的[nickName]
|
||
/// 关联视频的[vlogID]
|
||
/// 关联视频的首帧图[firstFrameImg]
|
||
/// 被回复评论的[commentID]
|
||
/// 回复的评论内容[comment]
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.orderRecharge:
|
||
// 充值成功通知
|
||
/// 订单编号[orderID]
|
||
/// 充值金额[amount]
|
||
/// 充值后帐户余额[totalAmount]
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.orderPay:
|
||
// 订单交易结果通知(商品购买成功后)
|
||
/// 订单编号[orderID]
|
||
/// 订单金额[amount]
|
||
/// 商品名称[name]
|
||
/// 商品描述[describe]
|
||
/// 商品价格[price]
|
||
/// 商品主图[pic]
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.orderRefund:
|
||
// 订单退款通知
|
||
/// 订单编号[orderID]
|
||
/// 订单金额[amount]
|
||
/// 商品名称[name]
|
||
/// 商品描述[describe]
|
||
/// 商品价格[price]
|
||
/// 商品主图[pic]
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.groupNotifyCheck:
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.groupNotifyAccpet:
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.groupNotifyFail:
|
||
return elment!.desc!;
|
||
case NotifyMessageTypeConstants.groupNotifyLeaveUp:
|
||
return elment!.desc!;
|
||
default:
|
||
return '[未知消息类型2]';
|
||
}
|
||
} catch (_) {
|
||
return '[未知消息类型3]';
|
||
}
|
||
}
|