|
|
@@ -1,5 +1,6 @@
|
|
|
-package com.xzjmyk.pm.activity.ui.erp.presenter;
|
|
|
+package com.modular.appmessages.presenter;
|
|
|
|
|
|
+import android.app.Activity;
|
|
|
import android.content.BroadcastReceiver;
|
|
|
import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
@@ -18,37 +19,37 @@ import com.common.data.JSONUtil;
|
|
|
import com.common.data.ListUtils;
|
|
|
import com.common.data.StringUtil;
|
|
|
import com.common.preferences.PreferenceUtils;
|
|
|
+import com.common.system.SystemUtil;
|
|
|
import com.common.thread.ThreadUtil;
|
|
|
import com.core.api.wxapi.ApiConfig;
|
|
|
import com.core.api.wxapi.ApiPlatform;
|
|
|
import com.core.api.wxapi.ApiUtils;
|
|
|
+import com.core.app.AppConstant;
|
|
|
import com.core.app.MyApplication;
|
|
|
import com.core.broadcast.MsgBroadcast;
|
|
|
+import com.core.dao.MessageDao;
|
|
|
+import com.core.dao.UUHelperDao;
|
|
|
import com.core.model.Friend;
|
|
|
+import com.core.model.MessageModel;
|
|
|
import com.core.model.OAConfig;
|
|
|
+import com.core.model.UUHelperModel;
|
|
|
import com.core.model.XmppMessage;
|
|
|
import com.core.net.http.http.OAHttpHelper;
|
|
|
import com.core.net.http.http.OnHttpResultListener;
|
|
|
import com.core.net.http.http.Request;
|
|
|
+import com.core.utils.CommonUtil;
|
|
|
import com.core.utils.TimeUtils;
|
|
|
import com.core.utils.sortlist.BaseSortModel;
|
|
|
import com.core.utils.sortlist.PingYinUtil;
|
|
|
import com.core.xmpp.dao.ChatMessageDao;
|
|
|
import com.core.xmpp.dao.FriendDao;
|
|
|
-import com.core.app.AppConstant;
|
|
|
import com.modular.appmessages.activity.MsgsSecondCommonActivity;
|
|
|
-import com.core.dao.MessageDao;
|
|
|
+import com.modular.appmessages.activity.UUHelperActivity;
|
|
|
import com.modular.appmessages.db.SubsDao;
|
|
|
-import com.core.model.MessageModel;
|
|
|
import com.modular.appmessages.model.SubMessage;
|
|
|
import com.modular.appmessages.model.SubscriptionMessage;
|
|
|
-import com.uas.appcontact.ui.activity.NewFriendActivity;
|
|
|
-import com.xzjmyk.pm.activity.ui.MainActivity;
|
|
|
-import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IMessageView;
|
|
|
-import com.xzjmyk.pm.activity.ui.message.ChatActivity;
|
|
|
-import com.xzjmyk.pm.activity.ui.message.MucChatActivity;
|
|
|
-import com.xzjmyk.pm.activity.util.im.UserRoleUtils;
|
|
|
-import com.xzjmyk.pm.activity.util.oa.CommonUtil;
|
|
|
+import com.modular.appmessages.presenter.imp.IMessageView;
|
|
|
+import com.modular.appmessages.util.ApprovalUtil;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
@@ -57,6 +58,7 @@ import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* Created by Bitliker on 2017/3/1.
|
|
|
*/
|
|
|
@@ -69,33 +71,31 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
private final int LOAD_EMNEWS_DETAILS = 0x15;
|
|
|
private final int LOAD_B2B_COUNT = 0x16;//获取b2b的审批和任务数量
|
|
|
private final int LOAD_BOOKING = 0x17;//小秘书红点
|
|
|
- @Deprecated
|
|
|
- public static final String AUTO_SIGIN_ALART = "AUTO_SIGIN_ALART";
|
|
|
+
|
|
|
|
|
|
private String SUB_READ_TIME;//订阅好点击阅读时间
|
|
|
|
|
|
private List<BaseSortModel<Friend>> mFriendList;
|
|
|
-
|
|
|
private Comparator<BaseSortModel<Friend>> erpComparator;
|
|
|
private IMessageView iMessageView;
|
|
|
- private MainActivity ct;
|
|
|
+ private Activity ct;
|
|
|
private String subReadTime;//订阅号点击时间
|
|
|
|
|
|
private String filter;//搜索数据
|
|
|
- private int emnewsNum, subsNum, processNum, taskNum, bookingNum;//红点消息分类数量
|
|
|
+ private int emnewsNum, subsNum, processNum, taskNum, bookingNum, uuHelperNum;//红点消息分类数量
|
|
|
private String[] RECEIVER_LIST = {ConnectivityManager.CONNECTIVITY_ACTION, OAConfig.AUTO_SIGIN_ALART, MsgBroadcast.ACTION_MSG_COMPANY_UPDATE, "com.app.home.update"
|
|
|
- ,MsgBroadcast.ACTION_MSG_UI_UPDATE};
|
|
|
+ , MsgBroadcast.ACTION_MSG_UI_UPDATE};
|
|
|
private BroadcastReceiver dataChangeReceiver = new BroadcastReceiver() {
|
|
|
@Override
|
|
|
public void onReceive(Context context, Intent intent) {
|
|
|
String action = intent.getAction();
|
|
|
if (StringUtil.isEmpty(action)) return;
|
|
|
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
|
|
|
- iMessageView.changeNet(CommonUtil.isNetWorkConnected(MyApplication.getInstance()));
|
|
|
+ iMessageView.changeNet(SystemUtil.isNetWorkConnected(MyApplication.getInstance()));
|
|
|
} else if (OAConfig.AUTO_SIGIN_ALART.equals(action)) {
|
|
|
loadNews(isB2b);//获取消息
|
|
|
} else if (action.equals("com.app.home.update") || action.equals(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE)
|
|
|
- ||action.equals(MsgBroadcast.ACTION_MSG_UI_UPDATE)) {
|
|
|
+ || action.equals(MsgBroadcast.ACTION_MSG_UI_UPDATE)) {
|
|
|
loadData();
|
|
|
}
|
|
|
}
|
|
|
@@ -103,8 +103,9 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
private boolean isB2b;
|
|
|
|
|
|
|
|
|
- public MessagePresenter(MainActivity ct, IMessageView iMessageView) {
|
|
|
+ public MessagePresenter(Activity ct, IMessageView iMessageView, UnReaderListener unReaderListener) {
|
|
|
this.ct = ct;
|
|
|
+ this.unReaderListener = unReaderListener;
|
|
|
mFriendList = new ArrayList<>();
|
|
|
if (iMessageView == null)
|
|
|
new NullPointerException("IMessageView not be null");
|
|
|
@@ -120,32 +121,32 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
public void loadData() {
|
|
|
isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
|
|
|
if (isB2b) {
|
|
|
- if ("1".equals(UserRoleUtils.getUserRole())){
|
|
|
+ if ("1".equals(com.core.utils.CommonUtil.getUserRole())) {
|
|
|
//个人用户
|
|
|
loadBookingNewNum();//预约红点接口
|
|
|
saveErp2DB(null);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
loadB2bNewsCount();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
} else {
|
|
|
SUB_READ_TIME = CommonUtil.getMaster() + "SUB_READ_TIME";//订阅好点击阅读时间
|
|
|
subReadTime = PreferenceUtils.getString(SUB_READ_TIME);
|
|
|
- if ("1".equals(UserRoleUtils.getUserRole())){
|
|
|
+ if ("1".equals(com.core.utils.CommonUtil.getUserRole())) {
|
|
|
//个人用户
|
|
|
- LogUtil.d("roamer","个人用户消息加载!");
|
|
|
+ LogUtil.d("roamer", "个人用户消息加载!");
|
|
|
loadBookingNewNum();//预约红点接口
|
|
|
-
|
|
|
- }else{
|
|
|
+
|
|
|
+ } else {
|
|
|
loadTaskData();//获取任务接口
|
|
|
loadProcessToDo();//获取审批流接口
|
|
|
loadSubData();
|
|
|
loadBookingNewNum();//预约红点接口
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
loadNews(isB2b);//获取消息
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
private void loadB2bNewsCount() {
|
|
|
@@ -167,7 +168,7 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
//获取网络数据
|
|
|
Map<String, Object> param = new HashMap<>();
|
|
|
param.put("count", 100);
|
|
|
- param.put("condition", "where to_char(createdate_,'yyyymmdd')='" + DateFormatUtil.long2Str( "yyyyMMdd") + "'");
|
|
|
+ param.put("condition", "where to_char(createdate_,'yyyymmdd')='" + DateFormatUtil.long2Str("yyyyMMdd") + "'");
|
|
|
param.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
|
|
|
|
|
|
Request request = new Request.Bulider()
|
|
|
@@ -355,7 +356,7 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
if (object.containsKey("processcount")) {
|
|
|
processNum = JSONUtil.getInt(object, "processcount");
|
|
|
String title = JSONUtil.getText(object, "lastProcess");
|
|
|
- long time = JSONUtil.getTime(object, "lastProcessTime") / 1000;
|
|
|
+ long time = JSONUtil.getTime(object, "lastProcessTime") / 1000;
|
|
|
if (time == 0) time = System.currentTimeMillis() / 1000;
|
|
|
iMessageView.updateHeaderView(0, processNum, title, TimeUtils.getFriendlyTimeDesc(ct, (int) time));
|
|
|
updateForUnReader();
|
|
|
@@ -363,7 +364,7 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
if (object.containsKey("taskcount")) {
|
|
|
taskNum = JSONUtil.getInt(object, "taskcount");
|
|
|
String title = JSONUtil.getText(object, "lasttask");
|
|
|
- long time = JSONUtil.getTime(object, "lasttaskTime") / 1000;
|
|
|
+ long time = JSONUtil.getTime(object, "lasttaskTime") / 1000;
|
|
|
if (time == 0) time = System.currentTimeMillis() / 1000;
|
|
|
String taskTime = TimeUtils.getFriendlyTimeDesc(ct, (int) time);
|
|
|
iMessageView.updateHeaderView(1, taskNum, title, taskTime);
|
|
|
@@ -397,7 +398,7 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
model.setId(object.getInteger("id"));
|
|
|
model.setTitle(object.getString("title"));
|
|
|
model.setSubTitle(object.getString("subTitle"));
|
|
|
- model.setTime(DateFormatUtil.long2Str( JSONUtil.getTime(object, "createTime"), "yyyy-MM-dd HH:mm"));
|
|
|
+ model.setTime(DateFormatUtil.long2Str(JSONUtil.getTime(object, "createTime"), "yyyy-MM-dd HH:mm"));
|
|
|
model.setHierarchy(1);
|
|
|
model.setType(type);
|
|
|
model.setCount(1);
|
|
|
@@ -447,7 +448,7 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
private void handlerProcess(JSONObject object) {
|
|
|
JSONArray itemArray = object.getJSONArray("data");
|
|
|
if (!ListUtils.isEmpty(itemArray))
|
|
|
- itemArray = CommonUtil.sortJsonArray(itemArray);
|
|
|
+ itemArray = ApprovalUtil.sortJsonArray(itemArray);
|
|
|
String subTitle = null;
|
|
|
long time = 0;
|
|
|
if (!ListUtils.isEmpty(itemArray)) {
|
|
|
@@ -455,7 +456,7 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
if (processNum > 0) {
|
|
|
subTitle = itemArray.getJSONObject(0).getString("JP_LAUNCHERNAME") + "的"
|
|
|
+ itemArray.getJSONObject(0).getString("JP_NAME");
|
|
|
- time = JSONUtil.getTime(itemArray.getJSONObject(0), "JP_LAUNCHTIME", "JP_REMINDDATE");
|
|
|
+ time = JSONUtil.getTime(itemArray.getJSONObject(0), "JP_LAUNCHTIME", "JP_REMINDDATE");
|
|
|
}
|
|
|
} else {
|
|
|
processNum = 0;
|
|
|
@@ -541,7 +542,7 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
model = new MessageModel();
|
|
|
model.setTitle(object.getString("title"));
|
|
|
model.setSubTitle(object.getString("lastMessage"));
|
|
|
- model.setTime(DateFormatUtil.long2Str( JSONUtil.getTime(object, "lastTime"), "yyyy-MM-dd HH:mm"));
|
|
|
+ model.setTime(DateFormatUtil.long2Str(JSONUtil.getTime(object, "lastTime"), "yyyy-MM-dd HH:mm"));
|
|
|
model.setType(object.getString("type"));
|
|
|
if (object.containsKey("count") && object.get("count") != null)
|
|
|
model.setCount(object.getInteger("count"));
|
|
|
@@ -560,13 +561,13 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
* @param models
|
|
|
*/
|
|
|
private void saveErp2DB(final List<MessageModel> models) {
|
|
|
+ LogUtil.i("saveErp2DB");
|
|
|
new Thread(new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
if (!ListUtils.isEmpty(models))
|
|
|
MessageDao.getInstance().createOrinstart(models, true);
|
|
|
final List<BaseSortModel<Friend>> chche = loadDataByImAsync();//loadDataByImAsync()
|
|
|
- LogUtil.d("roamer","saveErp2DB:"+JSON.toJSONString(chche));
|
|
|
OAHttpHelper.getInstance().post(new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
@@ -630,8 +631,9 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
String mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
|
|
|
List<Friend> friends = FriendDao.getInstance().getNearlyFriendMsg(mLoginUserId);
|
|
|
List<MessageModel> model = MessageDao.getInstance().queryFirstFloor();
|
|
|
+ List<UUHelperModel.UUHelperItem> uuHelperItems = UUHelperDao.getInstance().getAllModels();
|
|
|
setFriendName(friends, mLoginUserId);
|
|
|
- return handlerErpAndIm(friends, model);
|
|
|
+ return handlerErpAndIm(friends, model, uuHelperItems);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return null;
|
|
|
@@ -650,18 +652,13 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
* @param friends
|
|
|
* @param models
|
|
|
*/
|
|
|
- private List<BaseSortModel<Friend>> handlerErpAndIm(List<Friend> friends, List<MessageModel> models) throws Exception {
|
|
|
+ private List<BaseSortModel<Friend>> handlerErpAndIm(List<Friend> friends, List<MessageModel> models, List<UUHelperModel.UUHelperItem> uuHelperItems) throws Exception {
|
|
|
if (friends == null) friends = new ArrayList<>();
|
|
|
List<BaseSortModel<Friend>> chche = new ArrayList<>();
|
|
|
emnewsNum = 0;
|
|
|
//处理消息数据库的数据
|
|
|
if (!ListUtils.isEmpty(models)) {
|
|
|
for (MessageModel m : models) {
|
|
|
- //判断是已经删除了的 不显示 条件 status==3&&m.getTime()<=m.getReadTime()
|
|
|
-// if (m.getReadStatus() == 3 && !StringUtil.isEmpty(m.getTime()) && !StringUtil.isEmpty(m.getReadTime()) &&
|
|
|
-// m.getTime().compareTo(m.getReadTime()) <= 0) {//删除的数据
|
|
|
-// continue;
|
|
|
-// }
|
|
|
Friend friend = new Friend();
|
|
|
friend.setNickName(m.getTitle());
|
|
|
friend.setContent(m.getSubTitle());
|
|
|
@@ -672,16 +669,34 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
friend.setClickNum(m.getCount());
|
|
|
friend.setPhone(m.getReadTime());
|
|
|
int count = m.isReaded() ? 0 : m.getCount();
|
|
|
-// if (m.isReaded() && !StringUtil.isEmpty(m.getTime()) && !StringUtil.isEmpty(m.getReadTime()) &&
|
|
|
-// m.getTime().compareTo(m.getReadTime()) <= 0)
|
|
|
-// count = 0;
|
|
|
-// else
|
|
|
-// count = m.getCount();
|
|
|
emnewsNum += count;
|
|
|
friend.setUnReadNum(count);
|
|
|
friends.add(friend);
|
|
|
}
|
|
|
}
|
|
|
+ if (!ListUtils.isEmpty(uuHelperItems)) {
|
|
|
+ Friend friend = new Friend();
|
|
|
+ friend.setNickName("UU 消息助手");
|
|
|
+ friend.setType(XmppMessage.TYPE_UUHELPER);
|
|
|
+ UUHelperModel.UUHelperItem lastItem = null;
|
|
|
+ int unReadUnm = 0;
|
|
|
+ for (UUHelperModel.UUHelperItem item : uuHelperItems) {
|
|
|
+ if (!item.isReaded()) {
|
|
|
+ lastItem = item;
|
|
|
+ unReadUnm++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ friend.setClickNum(unReadUnm);
|
|
|
+ uuHelperNum = unReadUnm;
|
|
|
+ friend.setUnReadNum(unReadUnm);
|
|
|
+ if (lastItem != null) {
|
|
|
+ friend.set_id(lastItem.getId());
|
|
|
+ friend.setTimeSend((int) (lastItem.getTimeSend() / 1000));
|
|
|
+ } else {
|
|
|
+ friend.setContent("");
|
|
|
+ }
|
|
|
+ friends.add(friend);
|
|
|
+ }
|
|
|
//处理im数据库和消息列表合并后的数据
|
|
|
if (friends != null && friends.size() > 0) {
|
|
|
for (int i = 0; i < friends.size(); i++) {
|
|
|
@@ -731,6 +746,12 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
MessageDao.getInstance().deleteBytype(friend.getDescription());
|
|
|
loadData();
|
|
|
}
|
|
|
+ } else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
|
|
|
+ UUHelperDao.getInstance().deleteData(-1);
|
|
|
+ if (!ListUtils.isEmpty(mFriendList) && mFriendList.size() > position) {
|
|
|
+ mFriendList.remove(position);
|
|
|
+ iMessageView.showModel(mFriendList);
|
|
|
+ }
|
|
|
} else {
|
|
|
deleteByIm(friend, position);
|
|
|
}
|
|
|
@@ -748,6 +769,8 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
loadEmNewsDetails(friend.getDescription(), true);
|
|
|
// MessageDao.getInstance().upStatusByType(friend.getDescription(), true);
|
|
|
// loadData();
|
|
|
+ } else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
|
|
|
+ UUHelperDao.getInstance().updateRead();
|
|
|
} else {
|
|
|
if (friend.getUnReadNum() > 0) {
|
|
|
MsgBroadcast.broadcastMsgNumUpdate(ct, false, friend.getUnReadNum());
|
|
|
@@ -823,7 +846,9 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
FriendDao.getInstance().deleteFriend(loginUserId, friend.getUserId());
|
|
|
// 消息表中删除
|
|
|
ChatMessageDao.getInstance().deleteMessageTable(loginUserId, friend.getUserId());
|
|
|
- ct.exitMucChat(friend.getUserId());
|
|
|
+ if (this.unReaderListener != null) {
|
|
|
+ this.unReaderListener.exitMucChat(friend.getUserId());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -832,7 +857,7 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
* @param mContext
|
|
|
* @param position
|
|
|
*/
|
|
|
- public void turn2NextAct(MainActivity mContext, int position) {
|
|
|
+ public void turn2NextAct(Activity mContext, int position) {
|
|
|
Friend friend = mFriendList.get(position).getBean();
|
|
|
if (friend == null) {
|
|
|
return;
|
|
|
@@ -841,17 +866,20 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
//消息
|
|
|
turn2ERp(friend);
|
|
|
return;
|
|
|
- }
|
|
|
- if (friend.getRoomFlag() == 0) {
|
|
|
+ } else if (friend.getType() == XmppMessage.TYPE_UUHELPER) {
|
|
|
+ ct.startActivity(new Intent(ct, UUHelperActivity.class));
|
|
|
+ UUHelperDao.getInstance().updateRead();
|
|
|
+ return;
|
|
|
+ } if (friend.getRoomFlag() == 0) {
|
|
|
if (friend.getUserId().equals(Friend.ID_NEW_FRIEND_MESSAGE)) {// 新朋友消息
|
|
|
- mContext.startActivity(new Intent(mContext, NewFriendActivity.class));
|
|
|
+ mContext.startActivity(new Intent("com.modular.appcontact.NewFriendActivity"));
|
|
|
} else {
|
|
|
- Intent intent = new Intent(mContext, ChatActivity.class);
|
|
|
+ Intent intent = new Intent("com.modular.message.ChatActivity");
|
|
|
intent.putExtra(AppConstant.FRIEND, friend);
|
|
|
mContext.startActivity(intent);
|
|
|
}
|
|
|
} else {
|
|
|
- Intent intent = new Intent(mContext, MucChatActivity.class);
|
|
|
+ Intent intent = new Intent("com.modular.message.MucChatActivity");
|
|
|
intent.putExtra(AppConstant.EXTRA_USER_ID, friend.getUserId());
|
|
|
intent.putExtra(AppConstant.EXTRA_NICK_NAME, friend.getNickName());
|
|
|
intent.putExtra(AppConstant.EXTRA_IS_GROUP_CHAT, true);
|
|
|
@@ -888,9 +916,10 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
|
|
|
/*跟新未读红点信息*/
|
|
|
private void updateForUnReader() {
|
|
|
- int num = subsNum + processNum + emnewsNum + taskNum + bookingNum;
|
|
|
- if (ct != null)
|
|
|
- ct.setUnReader(num);
|
|
|
+ int num = subsNum + processNum + uuHelperNum + emnewsNum + taskNum + bookingNum;
|
|
|
+ if (this.unReaderListener != null) {
|
|
|
+ this.unReaderListener.setUnReader(num);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -903,11 +932,19 @@ public class MessagePresenter implements OnHttpResultListener {
|
|
|
this.subReadTime = subReadTime;
|
|
|
}
|
|
|
|
|
|
- public void onDestroyView(MainActivity mContext) {
|
|
|
+ public void onDestroyView(Context mContext) {
|
|
|
try {
|
|
|
mContext.unregisterReceiver(dataChangeReceiver);
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private UnReaderListener unReaderListener;
|
|
|
+
|
|
|
+ public interface UnReaderListener {
|
|
|
+ void setUnReader(int number);
|
|
|
+
|
|
|
+ void exitMucChat(String userId);
|
|
|
+ }
|
|
|
}
|