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]';
  }
}
