package com.netease.nim.demo.team;
import android.content.Context;
import android.os.Handler;
import android.util.Log;
import android.widget.Toast;
import com.netease.nim.demo.DemoCache;
import com.netease.nim.demo.main.activity.MainActivity;
import com.netease.nim.demo.session.SessionHelper;
import com.netease.nim.uikit.common.ui.dialog.DialogMaker;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.RequestCallback;
import com.netease.nimlib.sdk.msg.MessageBuilder;
import com.netease.nimlib.sdk.msg.MsgService;
import com.netease.nimlib.sdk.msg.constant.MsgStatusEnum;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.CustomMessageConfig;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.team.TeamService;
import com.netease.nimlib.sdk.team.constant.TeamFieldEnum;
import com.netease.nimlib.sdk.team.constant.TeamTypeEnum;
import com.netease.nimlib.sdk.team.model.Team;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by hzxuwen on 2015/9/25.
*/
public class TeamCreateHelper {
private static final String TAG = TeamCreateHelper.class.getSimpleName();
private static final int DEFAULT_TEAM_CAPACITY = 200;
/**
* 创建讨论组
*/
public static void createNormalTeam(final Context context, List<String> memberAccounts, final boolean isNeedBack, final RequestCallback<Void> callback) {
String teamName = "讨论组";
DialogMaker.showProgressDialog(context, context.getString(com.netease.nim.uikit.R.string.empty), true);
// 创建群
HashMap<TeamFieldEnum, Serializable> fields = new HashMap<TeamFieldEnum, Serializable>();
fields.put(TeamFieldEnum.Name, teamName);
NIMClient.getService(TeamService.class).createTeam(fields, TeamTypeEnum.Normal, "",
memberAccounts).setCallback(
new RequestCallback<Team>() {
@Override
public void onSuccess(Team team) {
DialogMaker.dismissProgressDialog();
Toast.makeText(DemoCache.getContext(), com.netease.nim.uikit.R.string.create_team_success,
Toast.LENGTH_SHORT).show();
if (isNeedBack) {
SessionHelper.startTeamSession(context, team.getId(), MainActivity.class, null); // 进入创建的群
} else {
SessionHelper.startTeamSession(context, team.getId());
}
if (callback != null) {
callback.onSuccess(null);
}
}
@Override
public void onFailed(int code) {
DialogMaker.dismissProgressDialog();
if (code == 801) {
String tip = context.getString(com.netease.nim.uikit.R.string.over_team_member_capacity, DEFAULT_TEAM_CAPACITY);
Toast.makeText(DemoCache.getContext(), tip,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(DemoCache.getContext(), com.netease.nim.uikit.R.string.create_team_failed,
Toast.LENGTH_SHORT).show();
}
Log.e(TAG, "create team error: " + code);
}
@Override
public void onException(Throwable exception) {
DialogMaker.dismissProgressDialog();
}
}
);
}
/**
* 创建高级群
*/
public static void createAdvancedTeam(final Context context, List<String> memberAccounts) {
String teamName = "高级群";
DialogMaker.showProgressDialog(context, context.getString(com.netease.nim.uikit.R.string.empty), true);
// 创建群
TeamTypeEnum type = TeamTypeEnum.Advanced;
HashMap<TeamFieldEnum, Serializable> fields = new HashMap<>();
fields.put(TeamFieldEnum.Name, teamName);
NIMClient.getService(TeamService.class).createTeam(fields, type, "",
memberAccounts).setCallback(
new RequestCallback<Team>() {
@Override
public void onSuccess(Team t) {
Log.i(TAG, "create team success, team id =" + t.getId() + ", now begin to update property...");
onCreateSuccess(context, t);
}
@Override
public void onFailed(int code) {
DialogMaker.dismissProgressDialog();
String tip;
if (code == 801) {
tip = context.getString(com.netease.nim.uikit.R.string.over_team_member_capacity,
DEFAULT_TEAM_CAPACITY);
} else if (code == 806) {
tip = context.getString(com.netease.nim.uikit.R.string.over_team_capacity);
} else {
tip = context.getString(com.netease.nim.uikit.R.string.create_team_failed) + ", code=" +
code;
}
Toast.makeText(context, tip, Toast.LENGTH_SHORT).show();
Log.e(TAG, "create team error: " + code);
}
@Override
public void onException(Throwable exception) {
DialogMaker.dismissProgressDialog();
}
}
);
}
/**
* 群创建成功回调
*/
private static void onCreateSuccess(final Context context, final Team team) {
if (team == null) {
Log.e(TAG, "onCreateSuccess exception: team is null");
return;
}
Log.i(TAG, "create and update team success");
DialogMaker.dismissProgressDialog();
Toast.makeText(DemoCache.getContext(), com.netease.nim.uikit.R.string.create_team_success, Toast.LENGTH_SHORT).show();
// 演示:向群里插入一条Tip消息,使得该群能立即出现在最近联系人列表(会话列表)中,满足部分开发者需求
Map<String, Object> content = new HashMap<>(1);
content.put("content", "成功创建高级群");
IMMessage msg = MessageBuilder.createTipMessage(team.getId(), SessionTypeEnum.Team);
msg.setRemoteExtension(content);
CustomMessageConfig config = new CustomMessageConfig();
config.enableUnreadCount = false;
msg.setConfig(config);
msg.setStatus(MsgStatusEnum.success);
NIMClient.getService(MsgService.class).saveMessageToLocal(msg, true);
// 发送后,稍作延时后跳转
new Handler(context.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
SessionHelper.startTeamSession(context, team.getId()); // 进入创建的群
}
}, 50);
}
}