package com.netease.nim.uikit.team.helper; import com.netease.nim.uikit.NimUIKit; import com.netease.nim.uikit.R; import com.netease.nim.uikit.contact.core.item.ContactIdFilter; import com.netease.nim.uikit.contact_selector.activity.ContactSelectActivity; import com.netease.nimlib.sdk.team.constant.TeamBeInviteModeEnum; import com.netease.nimlib.sdk.team.constant.TeamInviteModeEnum; import com.netease.nimlib.sdk.team.constant.TeamMemberType; import com.netease.nimlib.sdk.team.constant.TeamUpdateModeEnum; import com.netease.nimlib.sdk.team.constant.VerifyTypeEnum; import com.netease.nimlib.sdk.team.model.TeamMember; import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by hzxuwen on 2015/3/25. */ public class TeamHelper { public static VerifyTypeEnum getVerifyTypeEnum(String name) { VerifyTypeEnum type = null; if (name.equals(NimUIKit.getContext().getString(R.string.team_allow_anyone_join))) { type = VerifyTypeEnum.Free; } else if (name.equals(NimUIKit.getContext().getString(R.string.team_need_authentication))) { type = VerifyTypeEnum.Apply; } else if (name.equals(NimUIKit.getContext().getString(R.string.team_not_allow_anyone_join))) { type = VerifyTypeEnum.Private; } return type; } public static List<String> createAuthenMenuStrings() { int[] res = new int[]{R.string.team_allow_anyone_join, R.string.team_need_authentication, R.string.team_not_allow_anyone_join, R.string.cancel}; List<String> btnNames = new ArrayList<>(); for (int r : res) { btnNames.add(NimUIKit.getContext().getString(r)); } return btnNames; } public static int getVerifyString(VerifyTypeEnum type) { if (type == VerifyTypeEnum.Free) { return R.string.team_allow_anyone_join; } else if (type == VerifyTypeEnum.Apply) { return R.string.team_need_authentication; } else { return R.string.team_not_allow_anyone_join; } } // 邀请他人菜单项名称 public static List<String> createInviteMenuStrings() { int[] res = new int[]{R.string.team_admin_invite, R.string.team_everyone_invite, R.string.cancel}; List<String> btnNames = new ArrayList<>(); for (int r : res) { btnNames.add(NimUIKit.getContext().getString(r)); } return btnNames; } // 获取邀请他人类型 public static TeamInviteModeEnum getInviteModeEnum(String name) { TeamInviteModeEnum type = null; if (name.equals(NimUIKit.getContext().getString(R.string.team_admin_invite))) { type = TeamInviteModeEnum.Manager; } else if (name.equals(NimUIKit.getContext().getString(R.string.team_everyone_invite))) { type = TeamInviteModeEnum.All; } return type; } // 获取邀请他人文本描述 public static int getInviteModeString(TeamInviteModeEnum type) { if (type == TeamInviteModeEnum.Manager) { return R.string.team_admin_invite; } else { return R.string.team_everyone_invite; } } // 群资料修改权限菜单名称 public static List<String> createTeamInfoUpdateMenuStrings() { int[] res = new int[]{R.string.team_admin_update, R.string.team_everyone_update, R.string.cancel}; List<String> btnNames = new ArrayList<>(); for (int r : res) { btnNames.add(NimUIKit.getContext().getString(r)); } return btnNames; } // 获取群资料修改类型 public static TeamUpdateModeEnum getUpdateModeEnum(String name) { TeamUpdateModeEnum type = null; if (name.equals(NimUIKit.getContext().getString(R.string.team_admin_update))) { type = TeamUpdateModeEnum.Manager; } else if (name.equals(NimUIKit.getContext().getString(R.string.team_everyone_update))) { type = TeamUpdateModeEnum.All; } return type; } // 获取群资料修改类型文本描述 public static int getInfoUpdateModeString(TeamUpdateModeEnum type) { if (type == TeamUpdateModeEnum.Manager) { return R.string.team_admin_update; } else { return R.string.team_everyone_update; } } // 被邀请人身份验证名称 public static List<String> createTeamInviteeAuthenMenuStrings() { int[] res = new int[]{R.string.team_invitee_need_authen, R.string.team_invitee_not_need_authen, R.string.cancel}; List<String> btnNames = new ArrayList<>(); for (int r : res) { btnNames.add(NimUIKit.getContext().getString(r)); } return btnNames; } // 获取被邀请人身份类型 public static TeamBeInviteModeEnum getBeInvitedModeEnum(String name) { TeamBeInviteModeEnum type = null; if (name.equals(NimUIKit.getContext().getString(R.string.team_invitee_need_authen))) { type = TeamBeInviteModeEnum.NeedAuth; } else if (name.equals(NimUIKit.getContext().getString(R.string.team_invitee_not_need_authen))) { type = TeamBeInviteModeEnum.NoAuth; } return type; } // 获取被邀请人类型文本描述 public static int getBeInvitedModeString(TeamBeInviteModeEnum type) { if (type == TeamBeInviteModeEnum.NeedAuth) { return R.string.team_invitee_need_authen; } else { return R.string.team_invitee_not_need_authen; } } /** * 获取创建群通讯录选择器option * @return */ public static ContactSelectActivity.Option getCreateContactSelectOption(ArrayList<String> memberAccounts, int teamCapacity) { // 限制群成员数量在群容量范围内 int capacity = teamCapacity - (memberAccounts == null ? 0 : memberAccounts.size()); ContactSelectActivity.Option option = TeamHelper.getContactSelectOption(memberAccounts); option.maxSelectNum = capacity; option.maxSelectedTip = NimUIKit.getContext().getString(R.string.reach_team_member_capacity, teamCapacity); option.allowSelectEmpty = true; option.alreadySelectedAccounts = memberAccounts; return option; } /** * 获取通讯录选择器option * * @param memberAccounts * @return */ public static ContactSelectActivity.Option getContactSelectOption(List<String> memberAccounts) { ContactSelectActivity.Option option = new ContactSelectActivity.Option(); option.title = NimUIKit.getContext().getString(R.string.invite_member); if (memberAccounts != null) { ArrayList<String> disableAccounts = new ArrayList<>(); disableAccounts.addAll(memberAccounts); option.itemDisableFilter = new ContactIdFilter(disableAccounts); } return option; } private static Map<TeamMemberType, Integer> teamMemberLevelMap = new HashMap<>(4); static { teamMemberLevelMap.put(TeamMemberType.Owner, 0); teamMemberLevelMap.put(TeamMemberType.Manager, 1); teamMemberLevelMap.put(TeamMemberType.Normal, 2); teamMemberLevelMap.put(TeamMemberType.Apply, 3); } public static Comparator<TeamMember> teamMemberComparator = new Comparator<TeamMember>() { @Override public int compare(TeamMember l, TeamMember r) { if(l == null) { return 1; } if(r == null) { return -1; } return teamMemberLevelMap.get(l.getType()) - teamMemberLevelMap.get(r.getType()); } }; }