ImCustomMessage.from constructor

ImCustomMessage.from(
  1. String data
)

Implementation

factory ImCustomMessage.from(String data) {
  var message = jsonDecode(data);
  if (message is String) {
    //data如果带转义字符需要decode两次
    message = jsonDecode(message);
  }
  final int event = DynamicUtils.safeToInt(message["evt"]);
  dynamic entity;
  switch (event) {
    case ImCustomEvent.luckyTurntableExplodingLights:
      entity = ImLuckyTurntableExplodingLights.fromJson(message);
      break;
    case ImCustomEvent.luckyTurntableRewardMsg:
    case ImCustomEvent.luckyTurntableRewardGlobalMsg:
      entity = ImLuckyTurntableRewardMsg.fromJson(message);
      break;
    case ImCustomEvent.barrageMsg:
      entity = ImMessage.fromJson(message);
      break;
    case ImCustomEvent.openNobleGlobalMsg:
    case ImCustomEvent.openNobleMsg:
      entity = ImOpenNobleMsg.fromJson(message);
      break;
    case ImCustomEvent.levelUp:
      entity = ImLevelUp.fromJson(message);
      break;

    /// 直播间房间公告
    case ImCustomEvent.broadcast1:
    case ImCustomEvent.broadcast2:
      entity = ImBroadcast.fromJson(message);
      break;

    ///普通事件
    case ImCustomEvent.newMsgNum:
      entity = ImNewMsgNum.fromJson(message);
      break;

    ///直播间事件
    case ImCustomEvent.businessCardSwitch:
    case ImCustomEvent.turntableSwitch:
    case ImCustomEvent.insufficientBalance:
    case ImCustomEvent.message:
      entity = ImMessage.fromJson(message);
      break;
    case ImCustomEvent.kickOutMsg:
      var msg = ImMessage.fromJson(message);
      entity = msg.copyWith(msg: Strings.KickOutContent.tr);
      break;
    case ImCustomEvent.kickOut:
      var msg = ImMessage.fromJson(message);
      entity = msg.copyWith(msg: Strings.beKickOut.tr);
      break;
    case ImCustomEvent.mute:
      var msg = ImMessage.fromJson(message);
      if (msg.userId == UserManager().getUserId()) {
        entity = msg.copyWith(msg: Strings.beMute1.tr);
      } else {
        entity = msg.copyWith(msg: Strings.beMute2.tr);
      }
      break;
    case ImCustomEvent.joinRoom:
      entity = ImMessage.fromJson(message, Strings.joinLiveRoom.tr);
      break;
    case ImCustomEvent.subscribe:
      entity = ImMessage.fromJson(message, Strings.subscribeAnchor.tr);
      break;
    case ImCustomEvent.setRoomManager:
      var msg = ImMessage.fromJson(message);
      if (msg.userId == UserManager().getUserId()) {
        entity = msg.copyWith(msg: Strings.beRoomManager1.tr);
      } else {
        entity = msg.copyWith(msg: Strings.beRoomManager2.tr);
      }
      break;
    case ImCustomEvent.leaveRoom:
      entity = "leave room";
      break;
    case ImCustomEvent.liveClosed:
      entity = Strings.liveClosed.tr;
      break;
    case ImCustomEvent.liveFee:
      entity = ImFee.fromJson(message);
      break;
    case ImCustomEvent.turntableResult:
      entity = ImTurntable.fromJson(message);
      break;
    case ImCustomEvent.giftMsg:
      entity = ImGiftMsg.fromJson(message);
      break;
    case ImCustomEvent.openGuard:
      entity = ImOpenGuardMsg.fromJson(message);
      break;
    case ImCustomEvent.vibratingEgg:
    case ImCustomEvent.gift:
    case ImCustomEvent.backpackGift:
    case ImCustomEvent.bannerGift:
      entity = ImGift.fromJson(message);
      break;
    case ImCustomEvent.gameBet:
      entity = ImGameBet.fromJson(message);
      break;
    case ImCustomEvent.gameWin:
      entity = ImGameWin.fromJson(message);
      break;
    case ImCustomEvent.connectRoom:
      entity = ImConnectRoom.fromJson(message);
      break;
    case ImCustomEvent.gameResult:
      entity = ImGameResult.fromJson(message);
      break;
    case ImCustomEvent.anchorPaused:
    case ImCustomEvent.anchorResume:
      entity = "";
      break;
    case ImCustomEvent.ticketTimeOut:
      entity = ImMessage.fromJson(message, "本场直播付费时段已结束");
      break;
    case ImCustomEvent.deleteMsg:
      entity = ImMessage.fromJson(message);
      break;
    default:
      entity = message;
      break;
  }
  return ImCustomMessage(event, entity);
}