MM 新增世界聊天
This commit is contained in:
@@ -164,6 +164,8 @@ public class IMUIKitConfig {
|
||||
public static String SERVICES_IDS_TAG = "services_id";
|
||||
public static String RING_MESSAGE_TAG = "message_rings";
|
||||
public static String RING_CALL_TAG = "call_rings";
|
||||
//世界聊天ids
|
||||
public static String SHIJIECHAT_IDS_TAG = "shijiechat_id";
|
||||
|
||||
/**
|
||||
* GoogleMap apikey
|
||||
|
||||
@@ -89,7 +89,8 @@ public class TeamAnnouncementActivity extends LllChatBaseActivity {
|
||||
return;
|
||||
}
|
||||
Team teaminfo = teamResultInfo.getValue().getTeam();
|
||||
if (teaminfo.getCreator().equals(IMKitClient.account())) { //我是群主
|
||||
|
||||
if (teaminfo.getCreator().equals(IMKitClient.account())||teamResultInfo.getValue().getTeamMember().getType()==TeamMemberType.Manager) { //我是群主
|
||||
binding.layoutTeammember.setVisibility(View.GONE);
|
||||
binding.layoutTeammanager.setVisibility(View.VISIBLE);
|
||||
String announcement = teaminfo.getAnnouncement();
|
||||
|
||||
@@ -653,13 +653,13 @@ public class MainActivity extends BaseActivity {
|
||||
shareDateUtils = new ShareDateUtils();
|
||||
shareDateUtils.getAllSessionList();
|
||||
shareDateUtils.getLocFriends();
|
||||
// index2Fragment = new HomeFragment();
|
||||
// index2Fragment = new HomeFragment();
|
||||
chatTabFragment = new ChatTabFragment();
|
||||
// voomFragment = new VoomFragment();
|
||||
// voomFragment = new VoomFragment();
|
||||
walletFragment = new MineFragment();
|
||||
// fragments.add(index2Fragment);
|
||||
// fragments.add(index2Fragment);
|
||||
fragments.add(chatTabFragment);
|
||||
// fragments.add(voomFragment);
|
||||
// fragments.add(voomFragment);
|
||||
fragments.add(walletFragment);
|
||||
|
||||
fragmentAdapter = new FragmentAdapter(this);
|
||||
@@ -1866,11 +1866,17 @@ public class MainActivity extends BaseActivity {
|
||||
|
||||
if (feedbackResp.data != null && feedbackResp.data.size() > 0) {
|
||||
for (ConfigBean configBean : feedbackResp.data) {
|
||||
if (configBean.getId() == 1) {
|
||||
DataUtils.set(MainActivity.this, "transfer_cash", configBean.getVal().equals("1"));
|
||||
// if (configBean.getId() == 1) {
|
||||
// DataUtils.set(MainActivity.this, "transfer_cash", configBean.getVal().equals("1"));
|
||||
// }
|
||||
// if (configBean.getId() == 2) {
|
||||
// DataUtils.set(MainActivity.this, "transfer_jifen", configBean.getVal().equals("1"));
|
||||
// }
|
||||
if (configBean.getId() == 3) {
|
||||
DataUtils.set(MainActivity.this, "transfer_score", configBean.getVal().equals("1"));
|
||||
}
|
||||
if (configBean.getId() == 2) {
|
||||
DataUtils.set(MainActivity.this, "transfer_jifen", configBean.getVal().equals("1"));
|
||||
if (configBean.getId() == 4) {
|
||||
DataUtils.set(MainActivity.this, "redpkg_score", configBean.getVal().equals("1"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -25,18 +26,32 @@ import com.dskj.rbchat.R;
|
||||
import com.dskj.rbchat.databinding.FragmentChatconversationBinding;
|
||||
import com.dskj.rbchat.event.ConversationEditEvent;
|
||||
import com.dskj.rbchat.main.MainActivity;
|
||||
import com.dskj.rbchat.model.NotifyCountBean;
|
||||
import com.dskj.rbchat.network.Api;
|
||||
import com.dskj.rbchat.network.BaseObserver;
|
||||
import com.dskj.rbchat.network.Result;
|
||||
import com.dskj.rbchat.utils.AdaptScreenUtils;
|
||||
import com.dskj.rbchat.utils.DataUtils;
|
||||
import com.dskj.rbchat.utils.GsonUtils;
|
||||
import com.dskj.rbchat.utils.LogUtils;
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.netease.nimlib.sdk.NIMClient;
|
||||
import com.netease.nimlib.sdk.RequestCallback;
|
||||
import com.netease.nimlib.sdk.friend.model.MuteListChangedNotify;
|
||||
import com.netease.nimlib.sdk.msg.MsgService;
|
||||
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
|
||||
import com.netease.nimlib.sdk.msg.model.IMMessage;
|
||||
import com.netease.nimlib.sdk.msg.model.RecentContact;
|
||||
import com.netease.nimlib.sdk.msg.model.RecentSession;
|
||||
import com.netease.nimlib.sdk.team.TeamService;
|
||||
import com.netease.nimlib.sdk.team.constant.TeamMemberType;
|
||||
import com.netease.nimlib.sdk.team.model.Team;
|
||||
import com.netease.yunxin.kit.alog.ALog;
|
||||
import com.netease.yunxin.kit.chatkit.model.ConversationInfo;
|
||||
import com.netease.yunxin.kit.chatkit.model.UserInfoWithTeam;
|
||||
import com.netease.yunxin.kit.chatkit.repo.ContactRepo;
|
||||
import com.netease.yunxin.kit.chatkit.ui.ChatUIConstants;
|
||||
import com.netease.yunxin.kit.chatkit.ui.data.ChatDatabase;
|
||||
import com.netease.yunxin.kit.chatkit.ui.data.dao.ChatDraftDataDao;
|
||||
import com.netease.yunxin.kit.chatkit.ui.data.entity.ChatDraftData;
|
||||
@@ -63,9 +78,18 @@ import com.netease.yunxin.kit.corekit.im.model.FriendInfo;
|
||||
import com.netease.yunxin.kit.corekit.im.model.UserInfo;
|
||||
import com.netease.yunxin.kit.corekit.route.XKitRouter;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
//会话fragment
|
||||
public class ChatConversationFragment extends BaseFragment implements ILoadListener, ViewHolderClickListener {
|
||||
@@ -73,6 +97,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
public static final String TAG = "ChatConversationFragment";
|
||||
private int conversationType; //0,1,2
|
||||
private FragmentChatconversationBinding viewBinding;
|
||||
private ConversationView conversationViewShiJie;
|
||||
private ConversationView conversationViewTop;
|
||||
private ConversationView conversationViewBottom;
|
||||
protected View networkErrorView;
|
||||
@@ -82,6 +107,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
private List<ConversationBean> listFriend;
|
||||
List<ConversationBean> listMyTeam;
|
||||
List<ConversationBean> listJoinTeam;
|
||||
List<ConversationBean> listGuanfangTeam;
|
||||
private FunViewHolderFactory funViewHolderFactory;
|
||||
|
||||
private Observer<FetchResult<List<ConversationBean>>> changeObserver;
|
||||
@@ -95,6 +121,8 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
private Observer<FetchResult<Integer>> unreadCountObserver;
|
||||
private ChatDraftDataDao dataDao;
|
||||
|
||||
private ChatTabFragment chatTabParentFragment;
|
||||
|
||||
protected final EventNotify<ChangeChatDraftEvent> changeDraftEvent =
|
||||
new EventNotify<ChangeChatDraftEvent>() {
|
||||
@Override
|
||||
@@ -123,6 +151,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
}
|
||||
beans.add(bean);
|
||||
conversationViewTop.update(beans);
|
||||
conversationViewShiJie.update(beans);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -140,6 +169,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
|
||||
beans.add(bean);
|
||||
conversationViewBottom.update(beans);
|
||||
conversationViewShiJie.update(beans);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -172,6 +202,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
if (conversationType == 2) {
|
||||
listMyTeam = new ArrayList<>();
|
||||
listJoinTeam = new ArrayList<>();
|
||||
listGuanfangTeam = new ArrayList<>();
|
||||
}
|
||||
initView();
|
||||
return viewBinding.getRoot();
|
||||
@@ -192,8 +223,111 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
bindView();
|
||||
registerObserver();
|
||||
EventCenter.registerEventNotify(changeDraftEvent);
|
||||
// if (conversationType != 1) {
|
||||
// getNotifiesCount();
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
public ArrayList<String> groupShiJieIds = new ArrayList<>(); //官方群聊
|
||||
|
||||
// private void getNotifiesCount() {
|
||||
// Api.getInstance().notifiesmessageCountNew(IMKitClient.account(), DataUtils.getCurrentTimeType(System.currentTimeMillis()))
|
||||
// .subscribeOn(Schedulers.io())
|
||||
// .observeOn(AndroidSchedulers.mainThread())
|
||||
// .subscribe(new BaseObserver<>() {
|
||||
// @Override
|
||||
// public void onSuccess(Result<NotifyCountBean> feedbackResp) {
|
||||
// LogUtils.i("获取到的错误:" + feedbackResp + "" + feedbackResp.data);
|
||||
// String groupId = feedbackResp.data.getGroupId();
|
||||
// if (!TextUtils.isEmpty(groupId)) {
|
||||
// try {
|
||||
// JSONArray array = new JSONArray(groupId);
|
||||
// if (array.length() > 0) {
|
||||
// String values = array.getString(0);
|
||||
// if (!TextUtils.isEmpty(values)) {
|
||||
// String[] groupIdStr = values.split(",");
|
||||
// groupShiJieIds.addAll(Arrays.asList(groupIdStr));
|
||||
// queryTeamInfo();
|
||||
// }
|
||||
// }
|
||||
// } catch (JSONException e) {
|
||||
// throw new RuntimeException(e);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public void onError(int code, String msg) {
|
||||
// LogUtils.i("获取到的错误:" + code + "" + msg);
|
||||
//// WidgetUtils.showToast(getActivity(), msg, WidgetUtils.ToastType.ERROR);
|
||||
// LogUtils.i("获取到的错误:" + code + "" + msg);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
//
|
||||
// private void queryTeamInfo() {
|
||||
// for (String groupId : groupShiJieIds) {
|
||||
// NIMClient.getService(TeamService.class).searchTeam(groupId).setCallback(new RequestCallback<Team>() {
|
||||
// @Override
|
||||
// public void onSuccess(Team result) {
|
||||
// addShiJieConversation(result);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onFailed(int code) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onException(Throwable exception) {
|
||||
//
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// public void addShiJieConversation(Team team) {
|
||||
// RecentContact recentContact = NIMClient.getService(MsgService.class).createEmptyRecentContact(team.getId(), SessionTypeEnum.Team, 0, System.currentTimeMillis(), true, true);
|
||||
// ConversationInfo info = new ConversationInfo(recentContact);
|
||||
// info.setTeamInfo(team);
|
||||
// info.setStickTop(true);
|
||||
// ConversationBean conversationBean = new ConversationBean(info);
|
||||
// conversationBean.isShiJie = true;
|
||||
// List<ConversationBean> list = new ArrayList<>();
|
||||
// if (conversationType == 0) {
|
||||
// boolean isAdd = false;
|
||||
// for (ConversationBean conversationBean1 : conversationViewTop.getAdatper().getConversationList()) {
|
||||
// if (conversationBean1.infoData.getTeamInfo() != null && Objects.equals(conversationBean1.infoData.getTeamInfo().getId(), team.getId())) {
|
||||
// conversationBean1.infoData.setStickTop(true);
|
||||
// conversationBean1.isShiJie = true;
|
||||
// isAdd = true;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// if (!isAdd) {
|
||||
// list.add(conversationBean);
|
||||
// conversationViewTop.addData(list);
|
||||
// }
|
||||
// } else if (conversationType == 2) {
|
||||
// boolean isAdd = false;
|
||||
// for (ConversationBean conversationBean1 : conversationViewShiJie.getAdatper().getConversationList()) {
|
||||
// if (conversationBean1.infoData.getTeamInfo() != null && Objects.equals(conversationBean1.infoData.getTeamInfo().getId(), team.getId())) {
|
||||
// conversationBean1.infoData.setStickTop(true);
|
||||
// conversationBean1.isShiJie = true;
|
||||
// isAdd = true;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// if (!isAdd) {
|
||||
// list.add(conversationBean);
|
||||
// conversationViewShiJie.addData(list);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// }
|
||||
|
||||
private void registerObserver() {
|
||||
viewModel.getChangeLiveData().observeForever(changeObserver);
|
||||
@@ -233,6 +367,39 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
return result;
|
||||
};
|
||||
|
||||
public Comparator<ConversationBean> conversationShiJieComparator =
|
||||
(bean1, bean2) -> {
|
||||
int result;
|
||||
if (bean1 == null) {
|
||||
result = 1;
|
||||
} else if (bean2 == null) {
|
||||
result = -1;
|
||||
} else if (bean1.infoData.isStickTop() == bean2.infoData.isStickTop()) {
|
||||
if (bean1.isShiJie == bean2.isShiJie) {
|
||||
long time = bean1.infoData.getTime() - bean2.infoData.getTime();
|
||||
result = time == 0L ? 0 : (time > 0 ? -1 : 1);
|
||||
} else {
|
||||
result = bean1.isShiJie ? -1 : 1;
|
||||
}
|
||||
} else {
|
||||
result = bean1.isShiJie ? -1 : 1;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
|
||||
public List<ConversationBean> removeShiJieConversation(List<ConversationBean> conversationBeans) {
|
||||
List<ConversationBean> conversationBeans1 = new ArrayList<>();
|
||||
for (ConversationBean conversationBean : conversationBeans) {
|
||||
if (!chatTabParentFragment.groupIds.contains(conversationBean.infoData.getContactId())) {
|
||||
conversationBeans1.add(conversationBean);
|
||||
}
|
||||
}
|
||||
|
||||
return conversationBeans1;
|
||||
}
|
||||
|
||||
|
||||
private void initObserver() {
|
||||
changeObserver =
|
||||
result -> {
|
||||
@@ -249,8 +416,9 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
conversationViewTop.removeAll();
|
||||
conversationViewBottom.removeAll();
|
||||
} else {
|
||||
conversationViewTop.remove(result.getData());
|
||||
conversationViewBottom.remove(result.getData());
|
||||
List<ConversationBean> list = removeShiJieConversation(result.getData());
|
||||
conversationViewTop.remove(list);
|
||||
conversationViewBottom.remove(list);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -295,10 +463,13 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
if (result.getLoadStatus() == LoadStatus.Success) {
|
||||
ALog.d(LIB_TAG, TAG, "TeamInfoLiveData, Success");
|
||||
if (conversationType == 0) {
|
||||
LogUtils.d("shijie", "更新群组信息" + result.getData().size() + " conversation size==" + conversationViewTop.getDataSize());
|
||||
conversationViewTop.updateTeamInfo(result.getData());
|
||||
} else if (conversationType == 2) {
|
||||
LogUtils.d("shijie", "更新群组信息" + result.getData().size() + " conversationshijie size==" + conversationViewShiJie.getDataSize());
|
||||
conversationViewTop.updateTeamInfoType(result.getData(), true);
|
||||
conversationViewBottom.updateTeamInfoType(result.getData(), false);
|
||||
conversationViewShiJie.updateTeamInfo(result.getData());
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -309,6 +480,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
ALog.d(LIB_TAG, TAG, "MuteInfoLiveData, Success");
|
||||
conversationViewTop.updateMuteInfo(result.getData());
|
||||
conversationViewBottom.updateMuteInfo(result.getData());
|
||||
conversationViewShiJie.updateMuteInfo(result.getData());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -320,12 +492,14 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
ConversationHelper.updateAitInfo(result.getData(), true);
|
||||
conversationViewTop.updateAit(result.getData());
|
||||
conversationViewBottom.updateAit(result.getData());
|
||||
conversationViewShiJie.updateAit(result.getData());
|
||||
|
||||
} else if (result.getType() == FetchResult.FetchType.Remove) {
|
||||
ALog.d(LIB_TAG, TAG, "RemoveStickLiveData, Success");
|
||||
ConversationHelper.updateAitInfo(result.getData(), false);
|
||||
conversationViewTop.updateAit(result.getData());
|
||||
conversationViewBottom.updateAit(result.getData());
|
||||
conversationViewShiJie.updateAit(result.getData());
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -346,6 +520,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
//更新会话
|
||||
private void updateFollowList(List<ConversationBean> listFriend) {
|
||||
if (listFriend != null) {
|
||||
@@ -392,13 +567,18 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
private boolean showAllJoinTeam = false;
|
||||
|
||||
private void initView() {
|
||||
chatTabParentFragment = (ChatTabFragment) getParentFragment();
|
||||
viewBinding.layoutShijiechat.setVisibility(View.GONE);
|
||||
conversationViewTop = viewBinding.conversationViewTop;
|
||||
conversationViewShiJie = viewBinding.conversationViewTeamShijie;
|
||||
conversationViewBottom = viewBinding.conversationViewBottom;
|
||||
funViewHolderFactory = new FunViewHolderFactory();
|
||||
funViewHolderFactory.isSelector = false;
|
||||
conversationViewTop.setViewHolderFactory(funViewHolderFactory);
|
||||
conversationViewBottom.setViewHolderFactory(funViewHolderFactory);
|
||||
conversationViewShiJie.setViewHolderFactory(funViewHolderFactory);
|
||||
if (conversationType == 2) {
|
||||
viewBinding.layoutShijiechat.setVisibility(View.VISIBLE);
|
||||
conversationViewTop.getAdatper().setShowAll(false);
|
||||
conversationViewBottom.getAdatper().setShowAll(false);
|
||||
}
|
||||
@@ -439,9 +619,14 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
conversationViewTop.setComparator(conversationComparator);
|
||||
conversationViewTop.setLoadMoreListener(this);
|
||||
conversationViewTop.setItemClickListener(this);
|
||||
|
||||
conversationViewBottom.setComparator(conversationComparator);
|
||||
conversationViewBottom.setLoadMoreListener(this);
|
||||
conversationViewBottom.setItemClickListener(this);
|
||||
|
||||
conversationViewShiJie.setComparator(conversationComparator);
|
||||
conversationViewShiJie.setLoadMoreListener(this);
|
||||
conversationViewShiJie.setItemClickListener(this);
|
||||
}
|
||||
|
||||
private void getServicesData() {
|
||||
@@ -493,6 +678,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 初始化设置数据
|
||||
*
|
||||
@@ -503,6 +689,13 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
switch (conversationType) {
|
||||
case 0:
|
||||
List<ConversationBean> listconversation = updateServicesConversation(result.getData());
|
||||
if (chatTabParentFragment.groupIds != null) { //添加世界聊天窗口
|
||||
LogUtils.d("shijie", "添加世界聊天==" + chatTabParentFragment.groupIds.size());
|
||||
List<ConversationBean> conversationShiJieList = addConversationTeamShiJie(listconversation);
|
||||
LogUtils.d("shijie", "添加世界聊天==" + conversationShiJieList.size());
|
||||
listconversation.addAll(conversationShiJieList);
|
||||
}
|
||||
Collections.sort(listconversation, conversationShiJieComparator);
|
||||
conversationViewTop.setData(listconversation);
|
||||
break;
|
||||
case 1:
|
||||
@@ -511,15 +704,70 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
break;
|
||||
case 2:
|
||||
getConversationTeamTypeList(result.getData());
|
||||
LogUtils.d("shijie", "添加世界聊天 群组 groupsid==" + chatTabParentFragment.groupIds.size());
|
||||
listGuanfangTeam.addAll(addConversationTeamShiJie(listGuanfangTeam));
|
||||
LogUtils.d("shijie", "添加世界聊天 群组==" + listGuanfangTeam.size());
|
||||
setChatDraftDataList(listMyTeam);
|
||||
setChatDraftDataList(listJoinTeam);
|
||||
setChatDraftDataList(listGuanfangTeam);
|
||||
conversationViewTop.setData(listMyTeam);
|
||||
conversationViewBottom.setData(listJoinTeam);
|
||||
conversationViewShiJie.setData(listGuanfangTeam);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//在已有的会话中添加世界聊天会话
|
||||
public List<ConversationBean> addConversationTeamShiJie(List<ConversationBean> recentContactList) {
|
||||
List<ConversationBean> listconversation = new ArrayList<>();
|
||||
for (int i = 0; i < chatTabParentFragment.groupIds.size(); i++) {
|
||||
boolean isAdd = false;
|
||||
for (ConversationBean conversationBean : recentContactList) {
|
||||
if (conversationBean.infoData.getContactId().equals(chatTabParentFragment.groupIds.get(i))) {
|
||||
conversationBean.isShiJie = true;
|
||||
conversationBean.infoData.setStickTop(true);
|
||||
isAdd = true;
|
||||
}
|
||||
}
|
||||
if (!isAdd) {
|
||||
RecentContact recentContact = NIMClient.getService(MsgService.class).createEmptyRecentContact(chatTabParentFragment.groupIds.get(i), SessionTypeEnum.Team, 0, System.currentTimeMillis(), true, true);
|
||||
ConversationInfo info = new ConversationInfo(recentContact);
|
||||
if (chatTabParentFragment.teamInfos.size() > 0) {
|
||||
info.setTeamInfo(chatTabParentFragment.teamInfos.get(i));
|
||||
}
|
||||
info.setStickTop(true);
|
||||
ConversationBean conversationBean = new ConversationBean(info);
|
||||
conversationBean.isShiJie = true;
|
||||
listconversation.add(conversationBean);
|
||||
}
|
||||
|
||||
}
|
||||
return listconversation;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
// // 設置包含世界聊天
|
||||
// public List<ConversationBean> setHasTeamShiJie(List<ConversationBean> listConversationBean) {
|
||||
// if (chatTabParentFragment.groupIds == null) {
|
||||
// return listConversationBean;
|
||||
// }
|
||||
// for (int i = 0; i < chatTabParentFragment.groupIds.size(); i++) {
|
||||
// for (ConversationBean conversationBean : listConversationBean) {
|
||||
// if (conversationBean.infoData.getContactId().equals(chatTabParentFragment.groupIds.get(i))) {
|
||||
// ConversationBean conversationBean1 = listConversationBean.get(listConversationBean.indexOf(conversationBean));
|
||||
// listConversationBean.get(listConversationBean.indexOf(conversationBean1)).infoData.setStickTop(true);
|
||||
// listConversationBean.get(listConversationBean.indexOf(conversationBean1)).isShiJie = true;
|
||||
// isHasShiJieChat = true;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return listConversationBean;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 添加数据
|
||||
*
|
||||
@@ -541,6 +789,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
setChatDraftDataList(listJoinTeam);
|
||||
conversationViewTop.addData(listMyTeam);
|
||||
conversationViewBottom.addData(listJoinTeam);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -554,6 +803,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
private void setUpdateViewData(int conversationType, List<ConversationBean> result) {
|
||||
switch (conversationType) {
|
||||
case 0:
|
||||
LogUtils.d("shijie", "更新世界聊天" + result.size());
|
||||
conversationViewTop.update(updateServicesConversation(result));
|
||||
break;
|
||||
case 1:
|
||||
@@ -561,11 +811,14 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
conversationViewTop.update(updateServicesConversation(listFriend));
|
||||
break;
|
||||
case 2:
|
||||
LogUtils.d("shijie", "更新世界聊天2 " + result.size());
|
||||
getConversationTeamTypeList(result);
|
||||
setChatDraftDataList(listMyTeam);
|
||||
setChatDraftDataList(listJoinTeam);
|
||||
LogUtils.d("shijie", "更新世界聊天2 " + listGuanfangTeam.size());
|
||||
conversationViewTop.update(listMyTeam);
|
||||
conversationViewBottom.update(listJoinTeam);
|
||||
conversationViewShiJie.update(listGuanfangTeam);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -593,17 +846,27 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
}
|
||||
|
||||
|
||||
//去掉客服会话 改成添加字段
|
||||
//去掉客服会话, 修改世界聊天 改成添加字段
|
||||
public List<ConversationBean> updateServicesConversation(List<ConversationBean> beans) {
|
||||
if (servicesIds == null || servicesIds.size() == 0) {
|
||||
return beans;
|
||||
}
|
||||
if (chatTabParentFragment.groupIds == null) {
|
||||
return beans;
|
||||
}
|
||||
|
||||
for (ConversationBean conversationBean : beans) {
|
||||
conversationBean.isServices = false;
|
||||
conversationBean.isShiJie = false;
|
||||
if (conversationBean.infoData.getSessionType() == SessionTypeEnum.P2P && servicesIds.indexOf(conversationBean.infoData.getContactId()) >= 0) {
|
||||
conversationBean.isServices = true;
|
||||
}
|
||||
if (conversationBean.infoData.getSessionType() == SessionTypeEnum.Team || conversationBean.infoData.getSessionType() == SessionTypeEnum.SUPER_TEAM) {
|
||||
if (chatTabParentFragment.groupIds.contains(conversationBean.infoData.getContactId())) {
|
||||
conversationBean.isShiJie = true;
|
||||
conversationBean.infoData.setStickTop(true);
|
||||
}
|
||||
}
|
||||
//获取草稿内容
|
||||
updateChatDraftDataItem(conversationBean);
|
||||
}
|
||||
@@ -625,18 +888,29 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
public void getConversationTeamTypeList(List<ConversationBean> list) {
|
||||
listMyTeam.clear();
|
||||
listJoinTeam.clear();
|
||||
listGuanfangTeam.clear();
|
||||
for (ConversationBean conversationBean : list) {
|
||||
if (conversationBean.infoData.getTeamInfo() != null) { //不是群就是好友 也包含已删除的好友会话
|
||||
if (conversationBean.infoData.getTeamInfo().getCreator().equals(IMKitClient.account())) {
|
||||
listMyTeam.add(conversationBean);
|
||||
if (isShiJieConversation(conversationBean)) {
|
||||
conversationBean.isShiJie = true;
|
||||
conversationBean.infoData.setStickTop(true);
|
||||
listGuanfangTeam.add(conversationBean);
|
||||
} else {
|
||||
listJoinTeam.add(conversationBean);
|
||||
if (conversationBean.infoData.getTeamInfo().getCreator().equals(IMKitClient.account())) {
|
||||
listMyTeam.add(conversationBean);
|
||||
} else {
|
||||
listJoinTeam.add(conversationBean);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean isShiJieConversation(ConversationBean conversationBean) {
|
||||
return chatTabParentFragment.groupIds.contains(conversationBean.infoData.getContactId());
|
||||
}
|
||||
|
||||
private void doEmptyView() {
|
||||
if (conversationType != 2) {
|
||||
if (conversationViewTop.getDataSize() > 0) {
|
||||
@@ -647,10 +921,12 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
viewBinding.layoutOneroot.setVisibility(View.GONE);
|
||||
}
|
||||
} else {
|
||||
if (conversationViewTop.getDataSize() == 0 && conversationViewBottom.getDataSize() == 0) {
|
||||
if (conversationViewTop.getDataSize() == 0 && conversationViewBottom.getDataSize() == 0 && conversationViewShiJie.getDataSize() == 0) {
|
||||
emptyView.setVisibility(View.VISIBLE);
|
||||
viewBinding.layoutOneroot.setVisibility(View.GONE);
|
||||
viewBinding.layoutShijiechat.setVisibility(View.GONE);
|
||||
} else {
|
||||
viewBinding.layoutShijiechat.setVisibility(View.VISIBLE);
|
||||
emptyView.setVisibility(View.GONE);
|
||||
viewBinding.layoutOneroot.setVisibility(View.VISIBLE);
|
||||
}
|
||||
@@ -691,9 +967,11 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
position);
|
||||
}
|
||||
if (!result && !TextUtils.isEmpty(data.router)) {
|
||||
boolean isShiJie = ((ConversationBean) data).isShiJie;
|
||||
XKitRouter.withKey(data.router)
|
||||
.withParam(data.paramKey, data.param)
|
||||
.withParam("isService", ((ConversationBean) data).isServices)
|
||||
.withParam(ChatUIConstants.KEY_TEAM_ISGUANFANG, isShiJie)
|
||||
.withContext(ChatConversationFragment.this.requireContext())
|
||||
.navigate();
|
||||
}
|
||||
@@ -752,6 +1030,9 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe
|
||||
private void showBottomDialog(BaseBean data) {
|
||||
if (data instanceof ConversationBean) {
|
||||
ConversationBean dataBean = (ConversationBean) data;
|
||||
if (dataBean.isShiJie) {
|
||||
return;
|
||||
}
|
||||
BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(getActivity(), R.style.BottomSheetDialog);
|
||||
|
||||
View bottomView = LayoutInflater.from(getActivity()).inflate(R.layout.bottom_sheet_layout_conversation, null);
|
||||
|
||||
@@ -15,12 +15,18 @@ import androidx.fragment.app.FragmentManager;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import com.dskj.rbchat.IMUIKitConfig;
|
||||
import com.dskj.rbchat.R;
|
||||
import com.dskj.rbchat.base.LllChatBaseActivity;
|
||||
import com.dskj.rbchat.databinding.ActivityEditChatrecordBinding;
|
||||
import com.dskj.rbchat.dialog.ActionConfirmDialog;
|
||||
import com.dskj.rbchat.event.ConversationEditEvent;
|
||||
import com.dskj.rbchat.login.PhoneLoginActivity;
|
||||
import com.dskj.rbchat.model.NotifyCountBean;
|
||||
import com.dskj.rbchat.network.Api;
|
||||
import com.dskj.rbchat.network.BaseObserver;
|
||||
import com.dskj.rbchat.network.Result;
|
||||
import com.dskj.rbchat.utils.DataUtils;
|
||||
import com.dskj.rbchat.utils.LogUtils;
|
||||
import com.netease.nimlib.sdk.NIMClient;
|
||||
import com.netease.nimlib.sdk.msg.MsgService;
|
||||
@@ -42,11 +48,19 @@ import com.netease.yunxin.kit.conversationkit.ui.model.ConversationBean;
|
||||
import com.netease.yunxin.kit.conversationkit.ui.page.viewmodel.ConversationViewModel;
|
||||
import com.netease.yunxin.kit.conversationkit.ui.view.ConversationView;
|
||||
import com.netease.yunxin.kit.corekit.event.EventCenter;
|
||||
import com.netease.yunxin.kit.corekit.im.IMKitClient;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
//编辑聊天记录
|
||||
public class EditChatRecordlistActivity extends LllChatBaseActivity {
|
||||
|
||||
@@ -58,12 +72,14 @@ public class EditChatRecordlistActivity extends LllChatBaseActivity {
|
||||
public FunViewHolderFactory conversationFactory;
|
||||
private Observer<FetchResult<List<ConversationBean>>> changeObserver;
|
||||
public int paramType;
|
||||
public ArrayList<String> groupIds = new ArrayList<>(); //官方群聊
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
binding = ActivityEditChatrecordBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
groupIds = getIntent().getStringArrayListExtra("groupIds");
|
||||
initView();
|
||||
initObserver();
|
||||
initData();
|
||||
@@ -80,6 +96,7 @@ public class EditChatRecordlistActivity extends LllChatBaseActivity {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
private Comparator<ConversationInfo> conversationComparator =
|
||||
(bean1, bean2) -> {
|
||||
int result;
|
||||
@@ -107,11 +124,10 @@ public class EditChatRecordlistActivity extends LllChatBaseActivity {
|
||||
this,
|
||||
result -> {
|
||||
if (result.getLoadStatus() == LoadStatus.Success) {
|
||||
conversationView.setData(result.getData());
|
||||
conversationView.setData(removeShiJieConversation(result.getData()));
|
||||
} else if (result.getLoadStatus() == LoadStatus.Finish) {
|
||||
conversationView.addData(result.getData());
|
||||
conversationView.addData(removeShiJieConversation(result.getData()));
|
||||
}
|
||||
|
||||
if (conversationView.getDataSize() > 0) {
|
||||
binding.emptyLayout.setVisibility(View.GONE);
|
||||
} else {
|
||||
@@ -123,6 +139,22 @@ public class EditChatRecordlistActivity extends LllChatBaseActivity {
|
||||
|
||||
}
|
||||
|
||||
public List<ConversationBean> removeShiJieConversation(List<ConversationBean> listconversation) {
|
||||
List<ConversationBean> listconversation2 = new ArrayList<>();
|
||||
if (groupIds != null && groupIds.size() > 0) {
|
||||
for (ConversationBean conversationBean : listconversation) {
|
||||
if (!groupIds.contains(conversationBean.infoData.getContactId())) {
|
||||
listconversation2.add(conversationBean);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
listconversation2.addAll(listconversation);
|
||||
}
|
||||
return listconversation2;
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void initView() {
|
||||
binding.titleBarView.getBackImageView().setImageResource(R.mipmap.ic_dskj_back);
|
||||
binding.titleBarView.getTitleTextView().setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
|
||||
@@ -284,6 +316,9 @@ public class EditChatRecordlistActivity extends LllChatBaseActivity {
|
||||
conversationViewModel.getChangeLiveData().removeObserver(changeObserver);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
@@ -241,11 +241,11 @@ public class NotifyMessageActivity extends LllChatBaseActivity {
|
||||
|
||||
public void getActivityMsgCount() {
|
||||
binding.tvActivitycount.setVisibility(View.GONE);
|
||||
int activityMsgCount = DataUtils.get(this, "activity_message_count", 0);
|
||||
if (activityMsgCount > 0) {
|
||||
binding.tvActivitycount.setVisibility(View.VISIBLE);
|
||||
binding.tvActivitycount.setText(activityMsgCount > 99 ? "99+" : activityMsgCount + "");
|
||||
}
|
||||
// int activityMsgCount = DataUtils.get(this, "activity_message_count", 0);
|
||||
// if (activityMsgCount > 0) {
|
||||
// binding.tvActivitycount.setVisibility(View.VISIBLE);
|
||||
// binding.tvActivitycount.setText(activityMsgCount > 99 ? "99+" : activityMsgCount + "");
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -464,7 +464,7 @@ public class MineFragment extends BaseFragment {
|
||||
super.onResume();
|
||||
ALog.d(Constant.PROJECT_TAG, "MineFragment:onResume");
|
||||
if (DataUtils.getIsMerchant()) {
|
||||
binding.layoutActionLy.setVisibility(View.VISIBLE);
|
||||
binding.layoutActionLy.setVisibility(View.GONE);
|
||||
} else {
|
||||
binding.layoutActionLy.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,15 @@ public class ConfigBean {
|
||||
private String title;
|
||||
private String val;
|
||||
private String status;
|
||||
private String code;
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
|
||||
@@ -33,6 +33,16 @@ public class LoginBean extends RosterElementEntity {
|
||||
private Integer isBiz = 0;
|
||||
private double cashFeeRate; //cash费率
|
||||
private double silverFeeRate;//积分费率
|
||||
private double mmSilverFeeRate; //mm 积分费率
|
||||
|
||||
|
||||
public double getMmSilverFeeRate() {
|
||||
return mmSilverFeeRate;
|
||||
}
|
||||
|
||||
public void setMmSilverFeeRate(double mmSilverFeeRate) {
|
||||
this.mmSilverFeeRate = mmSilverFeeRate;
|
||||
}
|
||||
|
||||
public double getCashFeeRate() {
|
||||
return cashFeeRate;
|
||||
|
||||
@@ -1,9 +1,22 @@
|
||||
package com.dskj.rbchat.model;
|
||||
|
||||
import android.print.PageRange;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class NotifyCountBean {
|
||||
|
||||
public int systemMsgCount;
|
||||
public int activityMsgCount;
|
||||
public String groupId;
|
||||
|
||||
public String getGroupId() {
|
||||
return groupId;
|
||||
}
|
||||
|
||||
public void setGroupId(String groupId) {
|
||||
this.groupId = groupId;
|
||||
}
|
||||
|
||||
public int getSystemMsgCount() {
|
||||
return systemMsgCount;
|
||||
|
||||
@@ -81,7 +81,7 @@ public class TransferAccountsActivity extends BaseActivity {
|
||||
viewBinding = ActivityTransferAccountsBinding.inflate(getLayoutInflater());
|
||||
setContentView(viewBinding.getRoot());
|
||||
isJinBi = getIntent().getBooleanExtra("type", isJinBi);
|
||||
feeRate = isJinBi ? DataUtils.getLocUserInfo().getCashFeeRate() : DataUtils.getLocUserInfo().getSilverFeeRate();
|
||||
feeRate = isJinBi ? DataUtils.getLocUserInfo().getCashFeeRate() : DataUtils.getLocUserInfo().getMmSilverFeeRate();
|
||||
initView();
|
||||
initListeners();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user