package com.netease.nim.demo.team.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.netease.nim.demo.R;
import com.netease.nim.uikit.cache.SimpleCallback;
import com.netease.nim.uikit.cache.TeamDataCache;
import com.netease.nim.uikit.common.activity.UI;
import com.netease.nim.uikit.model.ToolBarOptions;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.RequestCallback;
import com.netease.nimlib.sdk.team.TeamService;
import com.netease.nimlib.sdk.team.constant.TeamTypeEnum;
import com.netease.nimlib.sdk.team.model.Team;
/**
* 申请加入群组界面
* Created by hzxuwen on 2015/3/20.
*/
public class AdvancedTeamJoinActivity extends UI implements View.OnClickListener {
private static final String EXTRA_ID = "EXTRA_ID";
private String teamId;
private Team team;
private TextView teamNameText;
private TextView memberCountText;
private TextView teamTypeText;
private Button applyJoinButton;
public static void start(Context context, String teamId) {
Intent intent = new Intent();
intent.putExtra(EXTRA_ID, teamId);
intent.setClass(context, AdvancedTeamJoinActivity.class);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nim_advanced_team_join_activity);
ToolBarOptions options = new ToolBarOptions();
options.titleId = R.string.team_join;
setToolBar(R.id.toolbar, options);
findViews();
parseIntentData();
requestTeamInfo();
}
private void findViews() {
teamNameText = (TextView) findViewById(R.id.team_name);
memberCountText = (TextView) findViewById(R.id.member_count);
applyJoinButton = (Button) findViewById(R.id.apply_join);
teamTypeText = (TextView) findViewById(R.id.team_type);
applyJoinButton.setOnClickListener(this);
}
private void parseIntentData() {
teamId = getIntent().getStringExtra(EXTRA_ID);
}
private void requestTeamInfo() {
Team t = TeamDataCache.getInstance().getTeamById(teamId);
if (t != null) {
updateTeamInfo(t);
} else {
TeamDataCache.getInstance().fetchTeamById(teamId, new SimpleCallback<Team>() {
@Override
public void onResult(boolean success, Team result) {
if (success && result != null) {
updateTeamInfo(result);
}
}
});
}
}
/**
* 更新群信息
*
* @param t 群
*/
private void updateTeamInfo(final Team t) {
if (t == null) {
Toast.makeText(AdvancedTeamJoinActivity.this, R.string.team_not_exist, Toast.LENGTH_LONG).show();
finish();
} else {
team = t;
teamNameText.setText(team.getName());
memberCountText.setText(team.getMemberCount() + "人");
if (team.getType() == TeamTypeEnum.Advanced) {
teamTypeText.setText(R.string.advanced_team);
} else {
teamTypeText.setText(R.string.normal_team);
}
}
}
@Override
public void onClick(View v) {
if (team != null) {
NIMClient.getService(TeamService.class).applyJoinTeam(team.getId(), null).setCallback(new RequestCallback<Team>() {
@Override
public void onSuccess(Team team) {
applyJoinButton.setEnabled(false);
String toast = getString(R.string.team_join_success, team.getName());
Toast.makeText(AdvancedTeamJoinActivity.this, toast, Toast.LENGTH_SHORT).show();
}
@Override
public void onFailed(int code) {
if (code == 808) {
applyJoinButton.setEnabled(false);
Toast.makeText(AdvancedTeamJoinActivity.this, R.string.team_apply_to_join_send_success,
Toast.LENGTH_SHORT).show();
} else if (code == 809) {
applyJoinButton.setEnabled(false);
Toast.makeText(AdvancedTeamJoinActivity.this, R.string.has_exist_in_team,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(AdvancedTeamJoinActivity.this, "failed, error code =" + code,
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onException(Throwable exception) {
}
});
}
}
}