package com.parttime.IM.activitysetting;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import com.android.volley.RequestQueue;
import com.carson.constant.ConstantForSaveList;
import com.easemob.chat.EMChatManager;
import com.easemob.chat.EMConversation;
import com.easemob.chat.EMGroup;
import com.easemob.chat.EMGroupManager;
import com.easemob.chatuidemo.activity.BaseActivity;
import com.easemob.chatuidemo.db.MessageSetDao;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.parttime.common.head.ActivityHead;
import com.parttime.constants.ActionConstants;
import com.parttime.constants.ActivityExtraAndKeys;
import com.parttime.constants.SharedPreferenceConstants;
import com.parttime.net.GroupSettingRequest;
import com.parttime.pojo.BaseUser;
import com.parttime.pojo.MessageSet;
import com.parttime.utils.SharePreferenceUtil;
import com.parttime.widget.SetItem;
import com.qingmu.jianzhidaren.R;
import com.quark.jianzhidaren.ApplicationControl;
import com.quark.volley.VolleySington;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Map;
public class GroupSettingActivity extends BaseActivity implements View.OnClickListener {
private final String TAG = "GroupSettingActivity";
private ActivityHead headView;
private SetItem top, //置顶
undisturb, //免扰
gag; //禁言
private String groupId ;
private EMGroup group;
private String groupType = null;
private MessageSet messageSet;
private boolean isDisturb;
protected RequestQueue queue = VolleySington.getInstance().getRequestQueue();
private SharePreferenceUtil sp = SharePreferenceUtil.getInstance(this);
private Gson gson = new Gson();
private MessageSetDao dao = new MessageSetDao(ApplicationControl.getInstance());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_group_setting_detail);
initView();
bindView();
}
private void initView() {
headView = new ActivityHead(this);
top = (SetItem)findViewById(R.id.top);
undisturb = (SetItem)findViewById(R.id.undisturb);
gag = (SetItem)findViewById(R.id.gag);
}
private void bindView() {
groupId = getIntent().getStringExtra(ActivityExtraAndKeys.GroupSetting.GROUPID);
if(groupId != null) {
group = EMGroupManager.getInstance().getGroup(groupId);
//获取群组type
Hashtable<String, EMConversation> conversations = EMChatManager
.getInstance().getAllConversations();
if(conversations != null){
EMConversation conversation = conversations.get(groupId);
if(conversation != null){
groupType = conversation.getType().name();
}
}else{
groupType = EMConversation.EMConversationType.GroupChat.name();
}
if( groupType != null) {
//查询置顶
messageSet = dao.getMessageSet(groupId, groupType);
}
if(ConstantForSaveList.disturbCache == null || ConstantForSaveList.disturbCache.size() == 0){
String disturbStr = sp.loadStringSharedPreference(SharedPreferenceConstants.DISTURB_CONFIGGURE);
if(!TextUtils.isEmpty(disturbStr)){
HashSet<String> data = gson.fromJson(disturbStr, new TypeToken <HashSet<String>>(){}.getType());
if(data != null && data.size() > 0){
ConstantForSaveList.disturbCache.addAll(data);
}
}
}
}
headView.setCenterTxt1(R.string.group_setting);
if(messageSet != null){
top.setRightImage(R.drawable.settings_btn_switch_on);
}
if(ConstantForSaveList.disturbCache != null && ConstantForSaveList.disturbCache.contains(groupId)){
undisturb.setRightImage(R.drawable.settings_btn_switch_on);
isDisturb = true;
}else{
undisturb.setRightImage(R.drawable.settings_btn_switch_off);
}
top.setOnClickListener(this);
undisturb.setOnClickListener(this);
gag.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.top:
toTop();
break;
case R.id.undisturb:
disturbSet();
break;
case R.id.gag:
ConstantForSaveList.userIdUserCache.clear();
Map<String,GroupSettingRequest.AppliantResult> groupAppliantCache = ConstantForSaveList.groupAppliantCache;
GroupSettingRequest.AppliantResult appliantResult = groupAppliantCache.get(groupId);
if(appliantResult != null && appliantResult.userList != null && appliantResult.userList.size() > 0){
for(GroupSettingRequest.UserVO userVO : appliantResult.userList){
if(userVO != null){
BaseUser baseUser = new BaseUser();
baseUser.userId = String.valueOf(userVO.userId);
baseUser.name = userVO.name;
baseUser.picture = userVO.picture;
ConstantForSaveList.userIdUserCache.put(String.valueOf(userVO.userId),baseUser);
}
}
}
Intent intent = new Intent(this, GroupGagActivity.class);
intent.putExtra(ActivityExtraAndKeys.GroupSetting.GROUPID, groupId);
startActivity(intent);
break;
}
}
private void toTop(){
if(group == null){
return;
}
if(messageSet == null){
messageSet = new MessageSet();
messageSet.name = group.getGroupId();
messageSet.type = groupType;
messageSet.isTop = true;
messageSet.createTime = System.currentTimeMillis();
long result = dao.save(messageSet);
if(result <= 0 ){
Log.i(TAG,"to top failed");
}
top.setRightImage(R.drawable.settings_btn_switch_on);
}else{
dao.delete(groupId, groupType);
messageSet = null;
top.setRightImage(R.drawable.settings_btn_switch_off);
}
}
public void disturbSet(){
if(isDisturb){
ConstantForSaveList.disturbCache.remove(groupId);
isDisturb = false;
undisturb.setRightImage(R.drawable.settings_btn_switch_off);
}else{
ConstantForSaveList.disturbCache.add(groupId);
isDisturb = true;
undisturb.setRightImage(R.drawable.settings_btn_switch_on);
}
}
@Override
protected void onStop() {
super.onStop();
sp.saveSharedPreferences(SharedPreferenceConstants.DISTURB_CONFIGGURE,gson.toJson(ConstantForSaveList.disturbCache));
new Thread(new Runnable() {
@Override
public void run() {
EMChatManager.getInstance().getChatOptions().setReceiveNotNoifyGroup(new ArrayList<>(ConstantForSaveList.disturbCache));
}
}).start();
}
@Override
protected void onDestroy() {
super.onDestroy();
sendBroadcast(new Intent(ActionConstants.ACTION_MESSAGE_TO_TOP));
}
}