diff --git a/common/build.gradle b/common/build.gradle index cf03d4f02..7c307d71f 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -73,6 +73,7 @@ dependencies { api "androidx.constraintlayout:constraintlayout:2.1.4" // To use constraintlayout in compose api "androidx.constraintlayout:constraintlayout-compose:1.0.1" + implementation 'androidx.lifecycle:lifecycle-common-java8:2.4.0' api files('../libs/commons-io-1.4.jar') //okHttp网络请求 api rootProject.ext.dependencies["okhttp"] @@ -150,10 +151,10 @@ dependencies { //腾讯im api 'com.tencent.imsdk:imsdk-plus:5.4.666' api 'com.google.code.gson:gson:2.8.8' - api 'cn.rongcloud.sdk:rtc_lib:5.2.0' // 音视频通话基础能力库 + api 'cn.rongcloud.sdk:rtc_lib:5.2.3.2' // 音视频通话基础能力库 //此处以集成 5.1.2 版本为例 - api 'cn.rongcloud.sdk:im_lib:5.1.3.10' // 即时通讯基础能力库 - api 'cn.rongcloud.sdk:im_kit:5.1.3.10' // 即时通讯 UI 基础组件 + api 'cn.rongcloud.sdk:im_lib:5.2.3.2' // 即时通讯基础能力库 + api 'cn.rongcloud.sdk:im_kit:5.2.3.2' // 即时通讯 UI 基础组件 api 'com.facebook.android:facebook-login:8.2.0' api 'com.facebook.android:facebook-android-sdk:[5,6)' diff --git a/common/src/main/java/com/yunbao/common/manager/imrongcloud/MessageIMManager.java b/common/src/main/java/com/yunbao/common/manager/imrongcloud/MessageIMManager.java index 1c2484c15..a1b534f65 100644 --- a/common/src/main/java/com/yunbao/common/manager/imrongcloud/MessageIMManager.java +++ b/common/src/main/java/com/yunbao/common/manager/imrongcloud/MessageIMManager.java @@ -83,6 +83,7 @@ public class MessageIMManager { * 获取系统消息(有未读数展示红点) */ public void getSystemMessages() { + systemNumber=0; IMLoginModel userInfo = IMLoginManager.get(mContext).getUserInfo(); HttpClient.getInstance().get("Message.getLists", "getImUserInfo") .params("uid", userInfo.getId()) @@ -102,12 +103,10 @@ public class MessageIMManager { //未读消息不为空并且大于0 try { if (!TextUtils.isEmpty(number) && Integer.parseInt(number) > 0) { - systemNumber = Integer.parseInt(number); - } else { - systemNumber = 0; + systemNumber = Integer.parseInt(number)+systemNumber; } } catch (NumberFormatException e) { - systemNumber = 0; + systemNumber =systemNumber+ 0; } } //发送通知 @@ -146,6 +145,7 @@ public class MessageIMManager { * 获取系统消息(有未读数展示红点) */ public void getSystemMessages(SystemMessagesHttpCallback callback) { + systemNumber=0; IMLoginModel userInfo = IMLoginManager.get(mContext).getUserInfo(); HttpClient.getInstance().get("Message.getLists", "getImUserInfo") .params("uid", userInfo.getId()) @@ -168,12 +168,10 @@ public class MessageIMManager { //未读消息不为空并且大于0 try { if (!TextUtils.isEmpty(number) && Integer.parseInt(number) > 0) { - systemNumber = Integer.parseInt(number); - } else { - systemNumber = 0; + systemNumber = Integer.parseInt(number)+systemNumber; } } catch (NumberFormatException e) { - systemNumber = 0; + systemNumber = systemNumber+0; } } //发送通知 diff --git a/live/src/main/java/com/yunbao/live/dialog/PDLiveMessageListAdapter.java b/live/src/main/java/com/yunbao/live/dialog/PDLiveMessageListAdapter.java index 7fc26cb6e..988618f7a 100644 --- a/live/src/main/java/com/yunbao/live/dialog/PDLiveMessageListAdapter.java +++ b/live/src/main/java/com/yunbao/live/dialog/PDLiveMessageListAdapter.java @@ -29,20 +29,21 @@ public class PDLiveMessageListAdapter extends MessageListAdapter { public void onBindViewHolder(@NonNull ViewHolder holder, int position) { super.onBindViewHolder(holder, position); Message.MessageDirection messageDirection = mDataList.get(position).getMessage().getMessageDirection(); - Message.SentStatus sentStatus = mDataList.get(position).getMessage().getSentStatus(); ImageView readReceipt = holder.getConvertView().findViewById(R.id.rc_read_receipt); - readReceipt.setVisibility(View.GONE); ImageView readReceiptNew = holder.getConvertView().findViewById(R.id.rc_read_receipt_new); - if (!mDataList.get(position).getMessage().getSenderUserId().equals(mDataList.get(position).getTargetId())) { - if (sentStatus.equals(Message.SentStatus.READ)) { + if (messageDirection==Message.MessageDirection.SEND){ + readReceiptNew.setVisibility(View.VISIBLE); + }else { + readReceiptNew.setVisibility(View.GONE); + } + if (readReceipt.getVisibility()==View.VISIBLE) { readReceiptNew.setBackgroundResource(R.mipmap.icon_message_read); } else { readReceiptNew.setBackgroundResource(R.mipmap.icon_message_unread); } - } else { + if (readReceipt!=null){ readReceipt.setVisibility(View.GONE); } - holder.getConvertView().setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { diff --git a/live/src/main/java/com/yunbao/live/views/InputPanelViewHolder.java b/live/src/main/java/com/yunbao/live/views/InputPanelViewHolder.java index 10c5036bb..0a928d7f2 100644 --- a/live/src/main/java/com/yunbao/live/views/InputPanelViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/InputPanelViewHolder.java @@ -78,24 +78,8 @@ public class InputPanelViewHolder extends LinearLayout implements View.OnClickLi inputPanelView.findViewById(R.id.lt_photo_button).setOnClickListener(this); inputPanelView.findViewById(R.id.lt_choospic_button).setOnClickListener(this); inputPanelView.findViewById(R.id.lt_video_button).setOnClickListener(this); -// editBtn.setOnFocusChangeListener(focusChangeListener); } -// //输入框焦点监听事件 -// View.OnFocusChangeListener focusChangeListener = new OnFocusChangeListener() { -// @Override -// public void onFocusChange(View v, boolean hasFocus) { -// if (!hasFocus&& pluginList.getVisibility()==GONE) { -// //失去焦点 -// InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); -// imm.showSoftInput(editBtn, InputMethodManager.SHOW_FORCED); -// imm.hideSoftInputFromWindow(editBtn.getWindowToken(), 0); //强制隐藏键盘 -// } else { -// pluginList.setVisibility(GONE); -// } -// } -// }; - @Override public void onClick(View v) { int id = v.getId(); diff --git a/live/src/main/java/com/yunbao/live/views/LiveAudienceViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveAudienceViewHolder.java index d236ed887..58aaeec93 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveAudienceViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveAudienceViewHolder.java @@ -16,6 +16,7 @@ import android.widget.TextView; import com.alibaba.fastjson.JSONObject; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; +import com.yunbao.common.event.MessageIMEvent; import com.yunbao.common.event.UpdateTablePoint; import com.yunbao.common.http.HttpCallback; import com.yunbao.common.http.HttpClient; @@ -355,11 +356,11 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder { } - //红点(直播页面) - @Subscribe(threadMode = ThreadMode.MAIN) - public void onUpdateFieldEvent(UpdateTablePoint updateTablePoint) { + //消息中心 + @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) + public void onMessageIMEvent(MessageIMEvent event) { //判断消息中心红点是否已经展示,如果已经展示并且未读消息大于0则不再执行之后的逻辑 - int number = updateTablePoint.getPoint(); + int number = event.getNumber(); if (v_msg_redpoint.getVisibility() == View.VISIBLE && number > 0) return; if (number > 0) { v_msg_redpoint.setVisibility(View.VISIBLE); diff --git a/live/src/main/res/layout/rc_conversationlist_item.xml b/live/src/main/res/layout/rc_conversationlist_item.xml index 0e63cb8fa..599a5ba56 100644 --- a/live/src/main/res/layout/rc_conversationlist_item.xml +++ b/live/src/main/res/layout/rc_conversationlist_item.xml @@ -62,12 +62,6 @@ android:layout_marginStart="15dp" android:layout_marginEnd="4dp" /> - 0&&!TextUtils.equals("__system__",userId)) { + if (code == 0 && info.length > 0 && !TextUtils.equals("__system__", userId)) { JSONObject obj = JSON.parseObject(info[0]); SearchUserBean userBean = JSON.toJavaObject(obj, SearchUserBean.class); String userNiceName = ""; @@ -159,6 +156,9 @@ public class ConversationIMListManager { return false; } + /** + * 长按时间 + */ @Override public boolean onConversationLongClick(Context context, View view, BaseUiConversation baseUiConversation) { new ConversationPopuwWindow((Activity) context) @@ -167,9 +167,14 @@ public class ConversationIMListManager { return true; } + /** + * 点击 + * @return + */ @Override public boolean onConversationClick(Context context, View view, BaseUiConversation baseUiConversation) { - return false; + jumpConversation((Activity) context, baseUiConversation.mCore.getTargetId()); + return true; } }; diff --git a/main/src/main/java/com/yunbao/main/utils/PDLiveCustomConversationProvider.java b/main/src/main/java/com/yunbao/main/utils/PDLiveCustomConversationProvider.java index 5d73a3316..60b881f13 100644 --- a/main/src/main/java/com/yunbao/main/utils/PDLiveCustomConversationProvider.java +++ b/main/src/main/java/com/yunbao/main/utils/PDLiveCustomConversationProvider.java @@ -38,23 +38,16 @@ public class PDLiveCustomConversationProvider extends BaseConversationProvider { public void bindViewHolder(ViewHolder holder, BaseUiConversation uiConversation, int position, List list, IViewProviderListener listener) { //根据业务需要,自定义处理 super.bindViewHolder(holder, uiConversation, position, list, listener); - if (list.size() > 0) { - Message.SentStatus sentStatus = list.get(position).mCore.getSentStatus(); - ImageView readReceipt = holder.itemView.findViewById(com.yunbao.live.R.id.rc_read_receipt_new); - View rcMargin = holder.itemView.findViewById(com.yunbao.live.R.id.rc_margin); - if (TextUtils.equals(list.get(position).mCore.getSenderUserId(), list.get(position).mCore.getTargetId())) { - readReceipt.setVisibility(View.GONE); - rcMargin.setVisibility(View.VISIBLE); - } + ImageView readReceipt = holder.itemView.findViewById(com.yunbao.live.R.id.rc_read_receipt_new); + if (uiConversation.mCore.getLatestMessageDirection()==Message.MessageDirection.SEND) { + Message.SentStatus sentStatus = uiConversation.mCore.getSentStatus(); if (sentStatus == Message.SentStatus.READ) { readReceipt.setBackgroundResource(com.yunbao.live.R.mipmap.icon_messagelist_read); } else { readReceipt.setBackgroundResource(com.yunbao.live.R.mipmap.icon_messagelist_unread); } - - + }else { + readReceipt.setVisibility(View.GONE); } - - } } diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeLiveViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeLiveViewHolder.java index 0e1845daa..a5ede55cd 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeLiveViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeLiveViewHolder.java @@ -211,48 +211,6 @@ public class MainHomeLiveViewHolder extends AbsMainHomeChildViewHolder implement } return new_data; -// if (select == 0) { -// JSONObject obj = JSON.parseObject(info[0]); -// mBannerList = JSON.parseArray(obj.getString("slide"), BannerBean.class); -// List old_data = JSON.parseArray(obj.getString("list"), LiveBean.class); -// new_data = new ArrayList<>(); -// if (old_data != null) { -// for (int j = 0; j < old_data.size(); j++) { -// new_data.add(old_data.get(j)); -// if (j == 3) { -// LiveBean liveBean = new LiveBean(); -// liveBean.setIsTop("1"); -// new_data.add(liveBean); -// } -// } -// } -// if (!isHave) { -// if (new_data.size() > 5) { -// new_data.remove(5); -// } -// } else { -// if (mWeekListBean != null) { -// if (new_data.size() > 5) { -// new_data.get(5).setmWeekList(mWeekListBean); -// } -// } -// } -// return new_data; -// } else { -// List old_data = JSON.parseArray(Arrays.toString(info), LiveBean.class); -// new_data = new ArrayList<>(); -// for (int j = 0; j < old_data.size(); j++) { -// new_data.add(old_data.get(j)); -// if (j == 3) { -// LiveBean liveBean = new LiveBean(); -// liveBean.setIsTop("1"); -// new_data.add(liveBean); -// } -// } -// return new_data; -// } - -// } } @Override @@ -286,11 +244,9 @@ public class MainHomeLiveViewHolder extends AbsMainHomeChildViewHolder implement } }); -// if (headView != null) { mClassRecyclerViewTop = (RecyclerView) findViewById(R.id.classRecyclerView_top); mClassRecyclerViewTop.setHasFixedSize(true); mClassRecyclerViewTop.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false)); -// } ConfigBean configBean = CommonAppConfig.getInstance().getConfig(); if (configBean != null) { List list = configBean.getLiveClass(); diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java index bbc853197..834025436 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java @@ -1,12 +1,10 @@ package com.yunbao.main.views; import android.content.Context; -import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; -import com.yunbao.common.HtmlConfig; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.utils.WordUtil; import com.yunbao.main.R; @@ -59,15 +57,11 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder { } else if (position == 1) { mainHomeLiveViewHolder = new MainHomeLiveViewHolder(mContext, parent); vh = mainHomeLiveViewHolder; - } - else if (position == 2) { + } else if (position == 2) { mainHomeRecomLiveViewHolder = new MainHomeRecomLiveViewHolder(mContext, parent); vh = mainHomeRecomLiveViewHolder; } -// else if (position == 3) { -// mCsdViewHolder = new MainHomeCsdViewHolder(mContext, parent); -// vh = mCsdViewHolder; -// } + if (vh == null) { return; } diff --git a/main/src/main/res/layout/rc_conversation_fragment.xml b/main/src/main/res/layout/rc_conversation_fragment.xml index 35a874b22..23a8fa31b 100644 --- a/main/src/main/res/layout/rc_conversation_fragment.xml +++ b/main/src/main/res/layout/rc_conversation_fragment.xml @@ -45,7 +45,6 @@ android:layout_marginStart="3dp" android:layout_marginTop="@dimen/rc_margin_size_30" android:layout_marginEnd="5dp" - android:background="@drawable/rc_selector_item_unread" android:drawableStart="@drawable/rc_unread_msg_arrow" android:drawablePadding="10dp" android:gravity="center|left" @@ -67,7 +66,6 @@ android:layout_marginStart="3dp" android:layout_marginTop="@dimen/rc_margin_size_80" android:layout_marginEnd="5dp" - android:background="@drawable/rc_selector_item_unread" android:drawableStart="@drawable/rc_unread_msg_arrow" android:drawablePadding="10dp" android:gravity="center|left"