convertToSystemInfoFromGroupTips static method

List<SystemMessageInfo> convertToSystemInfoFromGroupTips(
  1. V2TimGroupTipsElem tipsElem
)

Implementation

static List<SystemMessageInfo> convertToSystemInfoFromGroupTips(V2TimGroupTipsElem tipsElem) {
  final opUser = getMemberShowName(tipsElem.opMember);
  final userList = getMembersShowName(tipsElem.memberList);
  final groupID = tipsElem.groupID;

  switch (tipsElem.type) {
    case GroupTipsElemType.V2TIM_GROUP_TIPS_TYPE_JOIN:
      String joinMember;
      if (userList.isNotEmpty) {
        joinMember = userList.join(', ');
      } else {
        joinMember = opUser;
      }
      return [JoinGroupSystemMessage(groupID: groupID, joinMember: joinMember)];

    case GroupTipsElemType.V2TIM_GROUP_TIPS_TYPE_INVITE:
      final users = userList.join("、");
      return [
        InviteToGroupSystemMessage(
          groupID: groupID,
          inviter: opUser,
          inviteesShowName: users,
        )
      ];

    case GroupTipsElemType.V2TIM_GROUP_TIPS_TYPE_QUIT:
      return [QuitGroupSystemMessage(groupID: groupID, quitMember: opUser)];

    case GroupTipsElemType.V2TIM_GROUP_TIPS_TYPE_KICKED:
      final users = userList.join("、");
      return [
        KickedFromGroupSystemMessage(
          groupID: groupID,
          kickOperator: opUser,
          kickedMembersShowName: users,
        )
      ];

    case GroupTipsElemType.V2TIM_GROUP_TIPS_TYPE_SET_ADMIN:
      final users = userList.join("、");
      return [
        SetGroupAdminSystemMessage(
          groupID: groupID,
          setAdminOperator: opUser,
          setAdminMembersShowName: users,
        )
      ];

    case GroupTipsElemType.V2TIM_GROUP_TIPS_TYPE_CANCEL_ADMIN:
      final users = userList.join("、");
      return [
        CancelGroupAdminSystemMessage(
          groupID: groupID,
          cancelAdminOperator: opUser,
          cancelAdminMembersShowName: users,
        )
      ];

    case GroupTipsElemType.V2TIM_GROUP_TIPS_TYPE_GROUP_INFO_CHANGE:
      List<V2TimGroupChangeInfo?>? groupChangeInfoList = tipsElem.groupChangeInfoList;
      if (groupChangeInfoList != null) {
        return convertToSystemInfoFromGroupInfoChangedList(groupID, opUser, userList, groupChangeInfoList);
      }
      break;

    case GroupTipsElemType.V2TIM_GROUP_TIPS_TYPE_MEMBER_INFO_CHANGE:
      if (tipsElem.memberChangeInfoList != null && tipsElem.memberChangeInfoList!.isNotEmpty) {
        final info = tipsElem.memberChangeInfoList!.first;
        final userId = info?.userID;
        final myUserID = LoginStoreImpl.instance.loginState.loginUserInfo?.userID;
        final mutedMembersShowName = getMemberShowNameFromTips(tipsElem, userId);
        final isSelfMuted = userId == myUserID;
        final muteTime = info?.muteTime ?? 0;

        return [
          MuteGroupMemberSystemMessage(
            groupID: groupID,
            muteGroupMemberOperator: opUser,
            isSelfMuted: isSelfMuted,
            mutedGroupMembersShowName: mutedMembersShowName,
            muteTime: muteTime,
          )
        ];
      }
      break;

    case GroupTipsElemType.V2TIM_GROUP_TIPS_TYPE_PINNED_MESSAGE_ADDED:
      return [
        PinGroupMessageSystemMessage(
          groupID: groupID,
          pinGroupMessageOperator: opUser,
        )
      ];

    case GroupTipsElemType.V2TIM_GROUP_TIPS_TYPE_PINNED_MESSAGE_DELETED:
      return [
        UnpinGroupMessageSystemMessage(
          groupID: groupID,
          unpinGroupMessageOperator: opUser,
        )
      ];

    default:
      break;
  }

  return [UnknownSystemMessage()];
}