From 9d0f8cb0607880979700e4eb907b1145d52180eb Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Fri, 27 Oct 2023 17:53:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B5=8B=E8=AF=95=E5=8F=8D?= =?UTF-8?q?=E9=A6=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OneToOne/build.gradle | 68 +++++++++++++ OneToOne/src/main/AndroidManifest.xml | 2 +- .../java/com/shayu/onetoone/AppContext.java | 4 + .../shayu/onetoone/activity/MainActivity.java | 58 ++++------- .../fragments/home/HomeRankFragment.java | 1 + .../message/ChatMessageFragment.java | 91 +++++++++++------- .../message/MessageInteractiveFragment.java | 7 ++ .../message/MessageNoticeFragment.java | 7 ++ .../fragments/message/MsgFriendFragment.java | 9 +- .../fragments/message/MsgMessageFragment.java | 21 ++-- .../message/SystemMessageFragment.java | 7 ++ .../activity/login/CompleteActivity.java | 2 +- .../activity/login/LoginActivity.java | 26 +---- .../activity/message/CallAudioActivity.java | 4 + .../onetoone/activity/user/AuthActivity.java | 2 +- .../activity/user/AuthBloggerActivity.java | 2 +- .../activity/user/EditProfileActivity.java | 2 +- .../onetoone/bean/OfficialNoticeBean.java | 3 + .../com/shayu/onetoone/bean/UserBean.java | 2 +- .../onetoone/event/MessageMsgBusEvent.java | 3 +- .../onetoone/manager/CallClientManager.java | 62 ++++++------ .../shayu/onetoone/manager/OTONetManager.java | 26 ++++- .../shayu/onetoone/network/OneToOneApi.java | 2 + .../utils/ChatPluginExtensionConfig.java | 15 +++ .../shayu/onetoone/view/AbsInputPanel.java | 13 ++- .../onetoone/view/MsgInputPanelForGift.java | 13 ++- ...gle_voice.png => rc_ext_toggle_voice1.png} | Bin .../main/res/layout/fragment_home_ranking.xml | 2 +- .../main/res/layout/fragment_interaction.xml | 11 ++- .../src/main/res/layout/fragment_notice.xml | 11 ++- .../main/res/layout/item_home_recommend.xml | 4 +- .../res/layout/rc_conversation_fragment.xml | 2 - .../res/layout/rc_extension_input_panel.xml | 12 +-- .../view_conversation_system_fragment.xml | 12 +++ .../src/main/res/layout/view_inter_empty.xml | 28 ++++++ .../src/main/res/layout/view_notice_empty.xml | 28 ++++++ .../src/main/res/layout/view_system_empty.xml | 28 ++++++ .../src/main/res/mipmap-xxhdpi/diamond.png | Bin 0 -> 7095 bytes .../main/res/mipmap-xxhdpi/ic_msg_gift.png | Bin 3521 -> 7796 bytes .../src/main/res/values-zh-rHK/strings.xml | 9 +- .../src/main/res/values-zh-rTW/strings.xml | 9 +- OneToOne/src/main/res/values/strings.xml | 9 +- .../res/layout/rc_extension_input_panel.xml | 16 +-- 43 files changed, 441 insertions(+), 192 deletions(-) create mode 100644 OneToOne/src/main/java/com/shayu/onetoone/utils/ChatPluginExtensionConfig.java rename OneToOne/src/main/res/drawable/{rc_ext_toggle_voice.png => rc_ext_toggle_voice1.png} (100%) create mode 100644 OneToOne/src/main/res/layout/view_inter_empty.xml create mode 100644 OneToOne/src/main/res/layout/view_notice_empty.xml create mode 100644 OneToOne/src/main/res/layout/view_system_empty.xml create mode 100644 OneToOne/src/main/res/mipmap-xxhdpi/diamond.png diff --git a/OneToOne/build.gradle b/OneToOne/build.gradle index b05736f60..6c9aec0f9 100644 --- a/OneToOne/build.gradle +++ b/OneToOne/build.gradle @@ -15,6 +15,74 @@ android { compileSdkVersion rootProject.ext.android.compileSdkVersion buildToolsVersion rootProject.ext.android.buildToolsVersion + packagingOptions { + pickFirst "lib/armeabi/libyuvutils.so" + pickFirst "lib/arm64-v8a/libyuvutils.so" + pickFirst "lib/armeabi-v7a/libyuvutils.so" + pickFirst "lib/armeabi/libyuvtools.so" + pickFirst "lib/arm64-v8a/libyuvtools.so" + pickFirst "lib/armeabi-v7a/libyuvtools.so" + exclude "lib/arm64-v8a/libmmcv_api_handgesture.so" + exclude "lib/arm64-v8a/libmmcv_api_express.so" + exclude "lib/arm64-v8a/libMediaEncoder.so" + exclude "lib/arm64-v8a/libarcore_sdk_c.so" + exclude "lib/arm64-v8a/libmediadecoder.so" + exclude "lib/arm64-v8a/libMediaMuxer.so" + exclude "lib/arm64-v8a/libarcore_sdk_jni.so" + exclude "lib/arm64-v8a/libMediaUtils.so" + exclude "lib/arm64-v8a/libcosmosffmpeg.so" + //旧美颜so + exclude 'lib/arm64-v8a/libxeengine.so' + exclude 'lib/arm64-v8a/libmmcv_base.so' + exclude 'lib/arm64-v8a/libmmcrypto.so' + exclude 'lib/arm64-v8a/libMNN.so' + // exclude 'lib/arm64-v8a/libc++_shared.so' + exclude 'lib/arm64-v8a/libmmcv_api_base.so' + exclude 'lib/arm64-v8a/libmmcv_api_beauty.so' + exclude 'lib/arm64-v8a/libmmcv_api_bodylandmark.so' + exclude 'lib/arm64-v8a/libmmcv_api_express.so' + exclude 'lib/arm64-v8a/libmmcv_api_faceattributes.so' + exclude 'lib/arm64-v8a/libmmcv_api_facefeatures.so' + exclude 'lib/arm64-v8a/libmmcv_api_faceprocessor.so' + exclude 'lib/arm64-v8a/libmmcv_api_facerecognition.so' + exclude 'lib/arm64-v8a/libmmcv_api_handgesture.so' + exclude 'lib/arm64-v8a/libmmcv_api_imagequality.so' + exclude 'lib/arm64-v8a/libmmcv_api_objectdetect.so' + exclude 'lib/arm64-v8a/libmmcv_api_segmentation.so' + exclude 'lib/arm64-v8a/libmmcv_api_videoprocessor.so' + exclude 'lib/arm64-v8a/libmmlic.so' + exclude 'lib/arm64-v8a/libMNN_CL.so' + exclude 'lib/arm64-v8a/libMNN_Express.so' + exclude 'lib/armeabi-v7a/libxeengine.so' + exclude 'lib/armeabi-v7a/libmmcv_base.so' + exclude 'lib/armeabi-v7a/libmmcrypto.so' + exclude 'lib/armeabi-v7a/libMNN.so' + // exclude 'lib/armeabi-v7a/libc++_shared.so' + exclude 'lib/armeabi-v7a/libmmcv_api_base.so' + exclude 'lib/armeabi-v7a/libmmcv_api_beauty.so' + exclude 'lib/armeabi-v7a/libmmcv_api_bodylandmark.so' + exclude 'lib/armeabi-v7a/libmmcv_api_express.so' + exclude 'lib/armeabi-v7a/libmmcv_api_faceattributes.so' + exclude 'lib/armeabi-v7a/libmmcv_api_facefeatures.so' + exclude 'lib/armeabi-v7a/libmmcv_api_faceprocessor.so' + exclude 'lib/armeabi-v7a/libmmcv_api_facerecognition.so' + exclude 'lib/armeabi-v7a/libmmcv_api_handgesture.so' + exclude 'lib/armeabi-v7a/libmmcv_api_imagequality.so' + exclude 'lib/armeabi-v7a/libmmcv_api_objectdetect.so' + exclude 'lib/armeabi-v7a/libmmcv_api_segmentation.so' + exclude 'lib/armeabi-v7a/libmmcv_api_videoprocessor.so' + exclude 'lib/armeabi-v7a/libmmlic.so' + exclude 'lib/armeabi-v7a/libMNN_CL.so' + exclude 'lib/armeabi-v7a/libMNN_Express.so' + //美颜 + if (rootProject.ext.manifestPlaceholders.isPluginModel) { + exclude 'lib/armeabi-v7a/libCNamaSDK.so' + exclude 'lib/arm64-v8a/libCNamaSDK.so' + exclude 'lib/armeabi-v7a/libfuai.so' + exclude 'lib/arm64-v8a/libfuai.so' + } + + } defaultConfig { applicationId "com.shayu.onetoonenew" diff --git a/OneToOne/src/main/AndroidManifest.xml b/OneToOne/src/main/AndroidManifest.xml index c28cf82a6..cd40c6bd2 100644 --- a/OneToOne/src/main/AndroidManifest.xml +++ b/OneToOne/src/main/AndroidManifest.xml @@ -236,7 +236,7 @@ >() { - int point = 0; - + //大于0则是通过会话未读监听器获取到的数,则不用再调用获取未读数接口了 + if (count >= 0) { + updateUnreadCount(MsgMessageFragment.systemPoint + count); + Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_POINT, MsgMessageFragment.systemPoint + count)); + return; + } + RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback() { @Override - public void onSuccess(List data) { - for (OfficialNoticeBean datum : data) { - point += datum.getNum(); - } - Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_SYSTEM, point + count)); - //大于0则是通过会话未读监听器获取到的数,则不用再调用获取未读数接口了 - if (count >= 0) { - updateUnreadCount(point + count); - return; - } - RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback() { - @Override - public void onSuccess(Integer integer) { - updateUnreadCount(point + integer); - } - - @Override - public void onError(RongIMClient.ErrorCode e) { - - } - }); + public void onSuccess(Integer integer) { + updateUnreadCount(MsgMessageFragment.systemPoint + integer); + Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_POINT, MsgMessageFragment.systemPoint + integer)); } @Override - public void onError(String error) { + public void onError(RongIMClient.ErrorCode e) { } }); @@ -278,6 +254,10 @@ public class MainActivity extends AbsOTOActivity { public void busEvent(MessageMsgBusEvent event) { if (event.getType() == MessageMsgBusEvent.TYPE_ALL_READ) { updateUnreadCount(0); + } else if (event.getType() == MessageMsgBusEvent.TYPE_UPDATE_POINT) { + if (event.getNum() == -1) { + showRedPoint(-1); + } } } } \ No newline at end of file diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/home/HomeRankFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/home/HomeRankFragment.java index 2732087d6..2d15654f5 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/home/HomeRankFragment.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/home/HomeRankFragment.java @@ -190,6 +190,7 @@ public class HomeRankFragment extends BaseFragment { void setData(HomeRankBean user, int position) { getItem(position,mItem1,mItem2,mItem3).setVisibility(View.VISIBLE); + getItem(position,diamond1,diamond2,diamond3).setVisibility(View.VISIBLE); getItem(position, mName1, mName2, mName3).setText(user.getUserNicename()); getItem(position, mVotes1, mVotes2, mVotes3).setText(user.getMoney()); if (user.isFollow()) { diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/ChatMessageFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/ChatMessageFragment.java index 07400bc76..60799465e 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/ChatMessageFragment.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/ChatMessageFragment.java @@ -7,6 +7,7 @@ import android.content.ClipData; import android.content.ClipboardManager; import android.content.Intent; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; @@ -19,6 +20,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.content.FileProvider; import com.lxj.xpopup.XPopup; import com.makeramen.roundedimageview.RoundedImageView; @@ -27,9 +29,7 @@ import com.shayu.onetoone.adapter.MsgChatMessageListAdapter; import com.shayu.onetoone.bean.FollowBean; import com.shayu.onetoone.bean.GiftBean; import com.shayu.onetoone.bean.MessageChatAuthContent; -import com.shayu.onetoone.bean.MessageChatTipsContent; import com.shayu.onetoone.bean.MessageConsumeConfigBean; -import com.shayu.onetoone.bean.OfficialNoticeBean; import com.shayu.onetoone.bean.SendConsumeBean; import com.shayu.onetoone.bean.UserBean; import com.shayu.onetoone.dialog.BottomListDialog; @@ -53,7 +53,6 @@ import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.ProcessImageUtil; -import com.yunbao.common.utils.SpUtil; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; @@ -70,6 +69,8 @@ import java.util.List; import io.rong.imkit.IMCenter; import io.rong.imkit.config.RongConfigCenter; import io.rong.imkit.conversation.MessageListAdapter; +import io.rong.imkit.conversation.extension.InputMode; +import io.rong.imkit.conversation.extension.RongExtensionViewModel; import io.rong.imkit.model.UiMessage; import io.rong.imkit.picture.PictureSelector; import io.rong.imkit.picture.config.PictureMimeType; @@ -89,7 +90,7 @@ public class ChatMessageFragment extends AbsConversationFragment { View mInputPanel; View numLayout; EditText mEditText; - ImageView img, call, video, gift; + ImageView img, call, video, gift,mEmojiToggleBtn; ProcessImageUtil cameraUtil; String targetId; Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; @@ -103,6 +104,7 @@ public class ChatMessageFragment extends AbsConversationFragment { ImageView status; TextView num; Button follow; + RongExtensionViewModel mExtensionViewModel; private String token; @@ -126,7 +128,7 @@ public class ChatMessageFragment extends AbsConversationFragment { initBtn(); initChat(); initPriceBean(); - cameraUtil = new ProcessImageUtil(getActivity(), "com.shayu.onetoone.fileprovider"); + cameraUtil = new ProcessImageUtil(getActivity(), "${packageName}.fileprovider"); mRongExtension.setVisibility(View.VISIBLE); // img.setOnClickListener(v -> cameraUtil.getImageByCamera()); @@ -202,19 +204,25 @@ public class ChatMessageFragment extends AbsConversationFragment { MsgInputPanelForAudio audio; MsgInputPanelForGift giftPanel; + /** + * 反射拿融云的view + */ private void initBtn() { try { Field field = mRongExtension.getInputPanel().getClass().getDeclaredField("mInputPanel"); field.setAccessible(true); mInputPanel = (View) field.get(mRongExtension.getInputPanel()); assert mInputPanel != null; + field=mRongExtension.getInputPanel().getClass().getDeclaredField("mExtensionViewModel"); + field.setAccessible(true); + mExtensionViewModel= (RongExtensionViewModel) field.get(mRongExtension.getInputPanel()); mSendBtn = mInputPanel.getRootView().findViewById(R.id.send_btn); - img = mInputPanel.getRootView().findViewById(R.id.input_panel_image_btn); video = mInputPanel.getRootView().findViewById(R.id.input_panel_video_btn); call = mInputPanel.getRootView().findViewById(R.id.input_panel_call_btn); gift = mInputPanel.getRootView().findViewById(R.id.input_panel_gift_btn); mEditText = mInputPanel.getRootView().findViewById(R.id.edit_btn); + mEmojiToggleBtn = mInputPanel.findViewById(R.id.input_panel_emoji_btn); ImageView mVoiceToggleBtn = (ImageView) mInputPanel.getRootView().findViewById(R.id.input_panel_voice_toggle); assert mVoiceToggleBtn != null; audio = new MsgInputPanelForAudio(targetId, getActivity(), mRongExtension); @@ -230,12 +238,25 @@ public class ChatMessageFragment extends AbsConversationFragment { } }); mVoiceToggleBtn.setOnClickListener(view -> { + mExtensionViewModel.getInputModeLiveData().setValue(InputMode.TextInput); + giftPanel.hide(); audio.show(); }); gift.setOnClickListener(v -> { + mExtensionViewModel.getInputModeLiveData().setValue(InputMode.TextInput); + audio.hide(); giftPanel.show(); }); + mEmojiToggleBtn.setOnClickListener(v -> { + if(mExtensionViewModel.getInputModeLiveData().getValue()==InputMode.TextInput){ + audio.hide(); + giftPanel.hide(); + mExtensionViewModel.getInputModeLiveData().setValue(InputMode.EmoticonMode); + }else{ + mExtensionViewModel.getInputModeLiveData().setValue(InputMode.TextInput); + } + }); video.setOnClickListener(v -> { if (call.getTag() != null) { @@ -281,7 +302,9 @@ public class ChatMessageFragment extends AbsConversationFragment { @Override public void onError(int status, String msg) { super.onError(status, msg); - sendAuthRequest(); + if(status==1) { + sendAuthRequest(); + } } }); }); @@ -328,7 +351,9 @@ public class ChatMessageFragment extends AbsConversationFragment { @Override public void onError(int status, String msg) { super.onError(status, msg); - sendAuthRequest(); + if(status==1) { + sendAuthRequest(); + } } }); }); @@ -380,10 +405,10 @@ public class ChatMessageFragment extends AbsConversationFragment { .getTargetUserInfo(Integer.parseInt(targetId), new HttpCallback() { @Override public void onSuccess(UserBean data) { - if (data.getInfo().getName_auth() == 1) { - listener.onError(0, ""); - } else { + if (data.getInfo().getName_auth() == 2) { listener.onSuccess("", null); + } else { + listener.onError(data.getInfo().getName_auth(), ""); } } @@ -657,7 +682,14 @@ public class ChatMessageFragment extends AbsConversationFragment { for (LocalMedia item : selectList) { String mimeType = item.getMimeType(); if (mimeType.startsWith("image")) { - ImageMessage imageMessage = ImageMessage.obtain(Uri.parse(item.getPath()), sendOrigin); + Uri uri; + //判断安卓版本小于10 + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { + uri= FileProvider.getUriForFile(mContext,mContext.getPackageName()+".fileprovider",new File(item.getPath())); + }else{ + uri=Uri.parse(item.getPath()); + } + ImageMessage imageMessage = ImageMessage.obtain(uri, sendOrigin); Message message = Message.obtain(targetId, conversationType, imageMessage); message.setSenderUserId(CommonAppConfig.getInstance().getUid()); message.setObjectName("RC:ImgMsg"); @@ -714,35 +746,20 @@ public class ChatMessageFragment extends AbsConversationFragment { } private void showRedPoint() { - OTONetManager.getInstance(mContext).getMessageSystemLists(new HttpCallback>() { - int point = 0; - + RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback() { @Override - public void onSuccess(List data) { - for (OfficialNoticeBean datum : data) { - point += datum.getNum(); + public void onSuccess(Integer integer) { + Integer tmp = integer + MsgMessageFragment.systemPoint; + if (tmp <= 0) { + numLayout.setVisibility(View.INVISIBLE); + return; } - RongIMClient.getInstance().getTotalUnreadCount(new RongIMClient.ResultCallback() { - @Override - public void onSuccess(Integer integer) { - Integer tmp = integer + point; - if (tmp <= 0) { - numLayout.setVisibility(View.INVISIBLE); - return; - } - numLayout.setVisibility(View.VISIBLE); - num.setText(tmp + ""); - } - - @Override - public void onError(RongIMClient.ErrorCode e) { - - } - }); + numLayout.setVisibility(View.VISIBLE); + num.setText(tmp + ""); } @Override - public void onError(String error) { + public void onError(RongIMClient.ErrorCode e) { } }); @@ -757,7 +774,7 @@ public class ChatMessageFragment extends AbsConversationFragment { @Subscribe public void event(MessageMsgBusEvent event) { - if (event.getType() == MessageMsgBusEvent.TYPE_UPDATE_SYSTEM) { + if (event.getType() == MessageMsgBusEvent.TYPE_UPDATE_POINT) { if (event.getNum() <= 0) { numLayout.setVisibility(View.INVISIBLE); return; diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MessageInteractiveFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MessageInteractiveFragment.java index 2319fc248..d312c99b1 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MessageInteractiveFragment.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MessageInteractiveFragment.java @@ -48,6 +48,13 @@ public class MessageInteractiveFragment extends AbsConversationFragment { .getSystemMessageList(noticeBean.getType(), new HttpCallback>() { @Override public void onSuccess(List data) { + if(data.isEmpty()){ + mList.setVisibility(View.GONE); + findViewById(R.id.view_empty).setVisibility(View.VISIBLE); + return; + } + mList.setVisibility(View.VISIBLE); + findViewById(R.id.view_empty).setVisibility(View.GONE); List list = new ArrayList<>(); for (SystemMessageBean item : data) { SystemNoticeUiMessage message = new SystemNoticeUiMessage(new Message()); diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MessageNoticeFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MessageNoticeFragment.java index 685446db4..1f67d0053 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MessageNoticeFragment.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MessageNoticeFragment.java @@ -46,6 +46,13 @@ public class MessageNoticeFragment extends AbsConversationFragment { .getSystemMessageList(noticeBean.getType(), new HttpCallback>() { @Override public void onSuccess(List data) { + if(data.isEmpty()){ + mList.setVisibility(View.GONE); + findViewById(R.id.view_empty).setVisibility(View.VISIBLE); + return; + } + mList.setVisibility(View.VISIBLE); + findViewById(R.id.view_empty).setVisibility(View.GONE); List list = new ArrayList<>(); for (SystemMessageBean item : data) { SystemNoticeUiMessage message = new SystemNoticeUiMessage(new Message()); diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MsgFriendFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MsgFriendFragment.java index 88963f26b..19471812d 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MsgFriendFragment.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MsgFriendFragment.java @@ -1,7 +1,6 @@ package com.shayu.onetoone.activity.fragments.message; import android.graphics.Color; -import android.net.Uri; import android.os.Bundle; import android.text.SpannableString; import android.view.LayoutInflater; @@ -12,15 +11,12 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.alibaba.fastjson.JSONObject; import com.shayu.onetoone.R; import com.shayu.onetoone.activity.fragments.BaseFragment; import com.shayu.onetoone.adapter.MsgMessageRecyclerViewAdapter; import com.shayu.onetoone.bean.HomeItemBean; -import com.shayu.onetoone.bean.OfficialNoticeBean; import com.shayu.onetoone.event.MessageMsgBusEvent; import com.shayu.onetoone.manager.OTONetManager; -import com.yanzhenjie.recyclerview.OnItemClickListener; import com.yanzhenjie.recyclerview.OnItemMenuClickListener; import com.yanzhenjie.recyclerview.OnItemMenuStateListener; import com.yanzhenjie.recyclerview.SwipeMenuBridge; @@ -31,7 +27,6 @@ import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.StringUtil; -import com.yunbao.common.utils.WordUtil; import org.greenrobot.eventbus.Subscribe; @@ -55,8 +50,6 @@ import io.rong.imkit.widget.refresh.listener.OnRefreshListener; import io.rong.imkit.widget.refresh.wrapper.RongRefreshHeader; import io.rong.imlib.RongIMClient; import io.rong.imlib.model.Conversation; -import io.rong.imlib.model.Message; -import io.rong.imlib.model.UserInfo; /** * 消息-好友 @@ -238,7 +231,7 @@ public class MsgFriendFragment extends BaseFragment implements BaseAdapter.OnIte @Subscribe public void event(MessageMsgBusEvent event) { - if (event.getType() == MessageMsgBusEvent.TYPE_UPDATE_SYSTEM) { + if (event.getType() == MessageMsgBusEvent.TYPE_UPDATE_POINT) { page = 1; initData(); } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MsgMessageFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MsgMessageFragment.java index cfd50301d..fe4a4dc0d 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MsgMessageFragment.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/MsgMessageFragment.java @@ -1,7 +1,6 @@ package com.shayu.onetoone.activity.fragments.message; import android.content.Context; -import android.content.Intent; import android.graphics.Color; import android.net.Uri; import android.os.Bundle; @@ -24,19 +23,16 @@ import com.shayu.onetoone.bean.OfficialNoticeBean; import com.shayu.onetoone.bean.TargetUserInfoBean; import com.shayu.onetoone.event.MessageMsgBusEvent; import com.shayu.onetoone.manager.OTONetManager; -import com.shayu.onetoone.manager.RouteManager; import com.yanzhenjie.recyclerview.OnItemMenuClickListener; import com.yanzhenjie.recyclerview.OnItemMenuStateListener; import com.yanzhenjie.recyclerview.SwipeMenuBridge; import com.yanzhenjie.recyclerview.SwipeMenuCreator; import com.yanzhenjie.recyclerview.SwipeMenuItem; import com.yanzhenjie.recyclerview.SwipeRecyclerView; -import com.yunbao.common.CommonAppConfig; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.DpUtil; -import com.yunbao.common.utils.RandomUtil; import com.yunbao.common.utils.SpUtil; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; @@ -90,6 +86,7 @@ import io.rong.imlib.model.UserInfo; * copy {@link io.rong.imkit.conversationlist.ConversationListFragment} */ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnItemClickListener { + public static int systemPoint = 0; private static final String TAG = MsgMessageFragment.class.getSimpleName(); SwipeRecyclerView mList; SmartRefreshLayout mRefreshLayout; @@ -174,13 +171,13 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt private void initSystemNotice() { - - + systemPoint = 0; OTONetManager.getInstance(mContext) .getMessageSystemLists(new HttpCallback>() { @Override public void onSuccess(List data) { for (OfficialNoticeBean datum : data) { + systemPoint += datum.getNum(); if (datum.getType() == 3) { SpUtil.setStringValue("customerService", JSONObject.toJSONString(datum)); continue; @@ -196,6 +193,7 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt } onConversationListRefresh(mRefreshLayout); mAdapter.notifyDataSetChanged(); + Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_POINT, -1)); } @Override @@ -209,7 +207,7 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt } private SingleConversation setTopData(String title, String content, long time, String avatar, int num, int id, String exp) { - if(StringUtil.isEmpty(content)){ + if (StringUtil.isEmpty(content)) { content = ""; } SingleConversation conversation = new SingleConversation(getContext(), new Conversation()); @@ -241,7 +239,9 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt * 全部标记已读 */ public void allRead() { - // clearTopData(); + // clearTopData(); + OTONetManager.getInstance(mContext) + .messageReadAll(null); RongCoreClient.getInstance().getUnreadConversationList(new IRongCoreCallback.ResultCallback>() { @Override public void onSuccess(List conversations) { @@ -350,7 +350,9 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt public void onResume() { super.onResume(); + initSystemNotice(); if (this.mConversationListViewModel != null) { + mConversationListViewModel.getConversationList(false, true, 0L); this.mConversationListViewModel.clearAllNotification(); } @@ -426,6 +428,7 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt protected void onConversationListRefresh(RefreshLayout refreshLayout) { if (this.mConversationListViewModel != null) { + Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_POINT, -1)); this.mConversationListViewModel.getConversationList(false, true, 0L); } } @@ -489,7 +492,7 @@ public class MsgMessageFragment extends BaseFragment implements BaseAdapter.OnIt Bundle bundle = new Bundle(); bundle.putInt("model", noticeBean.getType()); bundle.putString("data", JSONObject.toJSONString(noticeBean)); - RouteUtils.routeToConversationActivity(getContext(), conversationIdentifier,bundle); + RouteUtils.routeToConversationActivity(getContext(), conversationIdentifier, bundle); } } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/SystemMessageFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/SystemMessageFragment.java index 8106f75dc..4645df151 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/SystemMessageFragment.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/SystemMessageFragment.java @@ -93,6 +93,13 @@ public class SystemMessageFragment extends AbsConversationFragment { .getSystemMessageList(SystemMessageBean.TYPE_SYSTEM, new HttpCallback>() { @Override public void onSuccess(List data) { + if(data.isEmpty()){ + mList.setVisibility(View.GONE); + findViewById(R.id.view_empty).setVisibility(View.VISIBLE); + return; + } + mList.setVisibility(View.VISIBLE); + findViewById(R.id.view_empty).setVisibility(View.GONE); for (SystemMessageBean item : data) { sendMessage(item); } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/login/CompleteActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/login/CompleteActivity.java index 0c0181f0d..9b0b3501b 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/login/CompleteActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/login/CompleteActivity.java @@ -87,7 +87,7 @@ public class CompleteActivity extends AbsOTOActivity { } private void initCamera() { - cameraUtil = new ProcessImageUtil(this, "com.shayu.onetoone.fileprovider"); + cameraUtil = new ProcessImageUtil(this, "${packageName}.fileprovider"); cameraUtil.setImageResultCallback(new ImageResultCallback() { @Override public void beforeCamera() { diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/login/LoginActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/login/LoginActivity.java index b843099b1..947c11662 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/login/LoginActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/login/LoginActivity.java @@ -18,51 +18,29 @@ import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; import com.alibaba.android.arouter.facade.annotation.Route; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.blankj.utilcode.util.DeviceUtils; -import com.blankj.utilcode.util.GsonUtils; import com.fm.openinstall.OpenInstall; import com.fm.openinstall.listener.AppInstallAdapter; import com.fm.openinstall.model.AppData; -import com.lzy.okgo.model.Response; import com.shayu.onetoone.R; import com.shayu.onetoone.activity.AbsOTOActivity; -import com.shayu.onetoone.activity.MainActivity; -import com.shayu.onetoone.bean.JoinAnchorBean; import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.RouteManager; -import com.shayu.onetoone.utils.MainHttpUtil; import com.yunbao.common.CommonAppConfig; -import com.yunbao.common.CommonAppContext; import com.yunbao.common.Constants; import com.yunbao.common.HtmlConfig; -import com.yunbao.common.activity.AbsActivity; import com.yunbao.common.activity.WebViewActivity; import com.yunbao.common.bean.ConfigBean; import com.yunbao.common.bean.IMLoginModel; -import com.yunbao.common.bean.LiveBean; import com.yunbao.common.bean.UserAreaBean; -import com.yunbao.common.bean.UserBean; import com.yunbao.common.fragment.LoadingDialog; -import com.yunbao.common.http.CommonHttpConsts; -import com.yunbao.common.http.CommonHttpUtil; -import com.yunbao.common.http.HttpCallback; -import com.yunbao.common.http.HttpClient; -import com.yunbao.common.http.JsonBean; -import com.yunbao.common.http.LiveHttpUtil; import com.yunbao.common.http.live.LiveNetManager; -import com.yunbao.common.interfaces.CommonCallback; import com.yunbao.common.manager.IMLoginManager; -import com.yunbao.common.manager.NoviceInstructorManager; import com.yunbao.common.manager.imrongcloud.RongcloudIMManager; -import com.yunbao.common.utils.LiveRoomCheckLivePresenter; import com.yunbao.common.utils.RouteUtil; -import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; - import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -160,7 +138,7 @@ public class LoginActivity extends AbsOTOActivity { public void onTextChanged(CharSequence s, int start, int before, int count) { String phone = mEditPhone.getText().toString(); String pwd = mEditPwd.getText().toString(); - mBtnLogin.setEnabled(!TextUtils.isEmpty(phone) && !TextUtils.isEmpty(pwd)); + // mBtnLogin.setEnabled(!TextUtils.isEmpty(phone) && !TextUtils.isEmpty(pwd)); } @Override @@ -373,6 +351,6 @@ public class LoginActivity extends AbsOTOActivity { @Override public void onBackPressed() { super.onBackPressed(); - RouteUtil.forwardEntry2(); + RouteManager.forwardEntryActivity(); } } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/message/CallAudioActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/message/CallAudioActivity.java index 19a50af68..0d5077873 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/message/CallAudioActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/message/CallAudioActivity.java @@ -104,6 +104,10 @@ public class CallAudioActivity extends AbsOTOActivity implements View.OnClickLis CallClientManager.getManager().removeOnVoIPCallListener(onCallStatusListener); } + @Override + public void onBackPressed() { + } + private void initView() { // 获取全局变量 vague = findViewById(R.id.vague); diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/user/AuthActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/user/AuthActivity.java index 4716146b0..440236fa5 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/user/AuthActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/user/AuthActivity.java @@ -149,7 +149,7 @@ public class AuthActivity extends AbsActivity { } private void initCamera() { - cameraUtil = new ProcessImageUtil(this, "com.shayu.onetoone.fileprovider"); + cameraUtil = new ProcessImageUtil(this, "${packageName}.fileprovider"); cameraUtil.setImageResultCallback(new ImageResultCallback() { @Override public void beforeCamera() { diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/user/AuthBloggerActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/user/AuthBloggerActivity.java index 78427f85d..4ce09f365 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/user/AuthBloggerActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/user/AuthBloggerActivity.java @@ -172,7 +172,7 @@ public class AuthBloggerActivity extends AbsActivity { }; private void initCamera() { - cameraUtil = new ProcessImageUtil(this, "com.shayu.onetoone.fileprovider"); + cameraUtil = new ProcessImageUtil(this, "${packageName}.fileprovider"); cameraUtil.setImageResultCallback(new ImageResultCallback() { @Override public void beforeCamera() { diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/user/EditProfileActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/user/EditProfileActivity.java index 1ffec088c..755688cfa 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/user/EditProfileActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/user/EditProfileActivity.java @@ -138,7 +138,7 @@ public class EditProfileActivity extends AbsActivity { } private void initCamera() { - cameraUtil = new ProcessImageUtil(this, "com.shayu.onetoone.fileprovider"); + cameraUtil = new ProcessImageUtil(this, "${packageName}.fileprovider"); cameraUtil.setImageResultCallback(new ImageResultCallback() { @Override public void beforeCamera() { diff --git a/OneToOne/src/main/java/com/shayu/onetoone/bean/OfficialNoticeBean.java b/OneToOne/src/main/java/com/shayu/onetoone/bean/OfficialNoticeBean.java index c865ec575..d864f7707 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/bean/OfficialNoticeBean.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/bean/OfficialNoticeBean.java @@ -57,6 +57,9 @@ public class OfficialNoticeBean extends BaseModel { } public int getNum() { + if (num < 0) { + num = 0; + } return num; } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/bean/UserBean.java b/OneToOne/src/main/java/com/shayu/onetoone/bean/UserBean.java index 0986350d5..fc1d24daf 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/bean/UserBean.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/bean/UserBean.java @@ -69,7 +69,7 @@ public class UserBean extends BaseModel { private int b_y; private int b_ym; private int b_ymd; - private int name_auth; + private int name_auth;//1 未提交 2 已认证 3已提交 private long name_auth_time; private String auth_front; private String auth_back; diff --git a/OneToOne/src/main/java/com/shayu/onetoone/event/MessageMsgBusEvent.java b/OneToOne/src/main/java/com/shayu/onetoone/event/MessageMsgBusEvent.java index ef2e6a810..a0295721a 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/event/MessageMsgBusEvent.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/event/MessageMsgBusEvent.java @@ -2,7 +2,8 @@ package com.shayu.onetoone.event; public class MessageMsgBusEvent extends AbsBusEvent { public static final int TYPE_ALL_READ = 0; - public static final int TYPE_UPDATE_SYSTEM=1; + public static final int TYPE_UPDATE_POINT =1; + public static final int TYPE_UPDATE_SYSTEM =2; private int num; diff --git a/OneToOne/src/main/java/com/shayu/onetoone/manager/CallClientManager.java b/OneToOne/src/main/java/com/shayu/onetoone/manager/CallClientManager.java index 1a122dd9a..ec851748a 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/manager/CallClientManager.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/manager/CallClientManager.java @@ -85,6 +85,37 @@ public class CallClientManager { public void addOnVoIPCallListener(OnCallStatusListener statusListener) { listeners.add(statusListener); + RongCallClient.getInstance().setVoIPCallListener(new CallStatusListener(new OnCallStatusListener() { + @Override + public void onCallWait(SurfaceView localVideo) { + for (OnCallStatusListener listener : listeners) { + listener.onCallWait(localVideo); + } + } + + @Override + public void onCallStart(String userId, SurfaceView remoteVideo) { + for (OnCallStatusListener listener : listeners) { + listener.onCallStart(userId, remoteVideo); + } + startTimer(null); + } + + @Override + public void onCallEnd() { + for (OnCallStatusListener listener : listeners) { + listener.onCallEnd(); + } + endTimer(); + } + + @Override + public void onStartFirstFrame() { + for (OnCallStatusListener listener : listeners) { + listener.onStartFirstFrame(); + } + } + })); } public void removeOnVoIPCallListener(OnCallStatusListener statusListener) { @@ -193,37 +224,6 @@ public class CallClientManager { } public void acceptCall(String callId) { - RongCallClient.getInstance().setVoIPCallListener(new CallStatusListener(new OnCallStatusListener() { - @Override - public void onCallWait(SurfaceView localVideo) { - for (OnCallStatusListener listener : listeners) { - listener.onCallWait(localVideo); - } - } - - @Override - public void onCallStart(String userId, SurfaceView remoteVideo) { - for (OnCallStatusListener listener : listeners) { - listener.onCallStart(userId, remoteVideo); - } - startTimer(null); - } - - @Override - public void onCallEnd() { - for (OnCallStatusListener listener : listeners) { - listener.onCallEnd(); - } - endTimer(); - } - - @Override - public void onStartFirstFrame() { - for (OnCallStatusListener listener : listeners) { - listener.onStartFirstFrame(); - } - } - })); RongCallClient.getInstance().acceptCall(callId); } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/manager/OTONetManager.java b/OneToOne/src/main/java/com/shayu/onetoone/manager/OTONetManager.java index 5fe0daad6..ac8ecdd31 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/manager/OTONetManager.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/manager/OTONetManager.java @@ -88,7 +88,7 @@ public class OTONetManager { @Override public void accept(ResponseModel imLoginModelResponseModel) throws Exception { if (callback != null) { - if(imLoginModelResponseModel.isError()){ + if (imLoginModelResponseModel.isError()) { JSONObject jsonSrc = imLoginModelResponseModel.getSrcJSONOBject(); callback.onError(jsonSrc.getJSONObject("data").getString("msg")); return; @@ -1370,7 +1370,7 @@ public class OTONetManager { } - public void getMenu( HttpCallback> callback) { + public void getMenu(HttpCallback> callback) { API.get().otoApi(mContext). getMenu() .subscribeOn(Schedulers.io()) @@ -1394,5 +1394,27 @@ public class OTONetManager { }).isDisposed(); } + public void messageReadAll(HttpCallback callback) { + API.get().otoApi(mContext). + messageReadAll() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + if (listResponseModel.getData().getCode() == 0) { + if(callback!=null) { + callback.onSuccess(new HttpCallbackModel(listResponseModel.getData().getCode(), listResponseModel.getData().getMsg())); + } + } else { + if(callback!=null) { + callback.onError(listResponseModel.getData().getMsg()); + } + } + }, throwable -> { + if (callback != null) { + callback.onError(mContext.getString(com.yunbao.common.R.string.net_error)); + } + }).isDisposed(); + } + } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java b/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java index e5eab7155..16aab8995 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java @@ -363,6 +363,8 @@ public interface OneToOneApi { */ @GET("/api/public/?service=Friendappinfos.getMenu") Observable>> getMenu(); + @GET("/api/public/?service=Message.setMessageReadAll") + Observable>> messageReadAll(); } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/utils/ChatPluginExtensionConfig.java b/OneToOne/src/main/java/com/shayu/onetoone/utils/ChatPluginExtensionConfig.java new file mode 100644 index 000000000..9625d77a8 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/utils/ChatPluginExtensionConfig.java @@ -0,0 +1,15 @@ +package com.shayu.onetoone.utils; + +import java.util.ArrayList; +import java.util.List; + +import io.rong.imkit.conversation.extension.DefaultExtensionConfig; +import io.rong.imkit.conversation.extension.component.plugin.IPluginModule; +import io.rong.imlib.model.Conversation; + +public class ChatPluginExtensionConfig extends DefaultExtensionConfig { + @Override + public List getPluginModules(Conversation.ConversationType conversationType, String targetId) { + return new ArrayList<>(); + } +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/view/AbsInputPanel.java b/OneToOne/src/main/java/com/shayu/onetoone/view/AbsInputPanel.java index aeb253cba..37e1ce25b 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/view/AbsInputPanel.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/view/AbsInputPanel.java @@ -10,6 +10,7 @@ import com.yunbao.common.utils.ToastUtil; import java.lang.reflect.Field; import androidx.fragment.app.FragmentActivity; + import io.rong.imkit.conversation.extension.RongExtension; public abstract class AbsInputPanel { @@ -19,6 +20,7 @@ public abstract class AbsInputPanel { String targetId; ViewGroup rootLayout; View rootView; + boolean isShow = false; public AbsInputPanel(String targetId, FragmentActivity mContext, RongExtension mRongExtension, int layout) { this.mContext = mContext; @@ -38,16 +40,23 @@ public abstract class AbsInputPanel { } public int show() { - if (rootLayout.getVisibility() == View.VISIBLE) { + rootLayout.removeAllViews(); + if (isShow) { rootLayout.setVisibility(View.GONE); + isShow = false; return View.GONE; } - rootLayout.removeAllViews(); + isShow = true; rootLayout.addView(rootView); rootLayout.setVisibility(View.VISIBLE); return View.VISIBLE; } + public void hide() { + rootLayout.removeAllViews(); + rootLayout.setVisibility(View.GONE); + } + public abstract void init(View viewGroup); } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/view/MsgInputPanelForGift.java b/OneToOne/src/main/java/com/shayu/onetoone/view/MsgInputPanelForGift.java index 8873912c8..5130e9f73 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/view/MsgInputPanelForGift.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/view/MsgInputPanelForGift.java @@ -1,5 +1,6 @@ package com.shayu.onetoone.view; +import android.app.Dialog; import android.view.View; import android.widget.Button; import android.widget.TextView; @@ -16,6 +17,7 @@ import com.shayu.onetoone.bean.PurseBean; import com.shayu.onetoone.bean.SendConsumeBean; import com.shayu.onetoone.dialog.TipsDialog; import com.shayu.onetoone.event.MoneyUpdateEvent; +import com.shayu.onetoone.listener.OnDialogClickListener; import com.shayu.onetoone.listener.OnSendMessageListener; import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.SendMessageManager; @@ -96,8 +98,15 @@ public class MsgInputPanelForGift extends AbsInputPanel { public void onError(int status, String msg) { super.onError(status, msg); new TipsDialog(mContext) - .setTitle(WordUtil.getNewString(R.string.not_money)) - .setApplyText(WordUtil.getNewString(R.string.dialog_apply)) + .setTitle(WordUtil.getNewString(R.string.gift_not_money)) + .setApplyText(WordUtil.getNewString(R.string.money_apply)) + .setOnDialogClickListener(new OnDialogClickListener() { + @Override + public void onApply(Dialog dialog) { + super.onApply(dialog); + ToastUtil.showDebug("沒有H5頁面!"); + } + }) .showDialog(); } }); diff --git a/OneToOne/src/main/res/drawable/rc_ext_toggle_voice.png b/OneToOne/src/main/res/drawable/rc_ext_toggle_voice1.png similarity index 100% rename from OneToOne/src/main/res/drawable/rc_ext_toggle_voice.png rename to OneToOne/src/main/res/drawable/rc_ext_toggle_voice1.png diff --git a/OneToOne/src/main/res/layout/fragment_home_ranking.xml b/OneToOne/src/main/res/layout/fragment_home_ranking.xml index 5f60b2ab3..1576f01fb 100644 --- a/OneToOne/src/main/res/layout/fragment_home_ranking.xml +++ b/OneToOne/src/main/res/layout/fragment_home_ranking.xml @@ -132,7 +132,7 @@ android:layout_width="18dp" android:layout_height="15dp" android:src="@mipmap/diamond" - android:visibility="invisible" + android:visibility="gone" tools:visibility="visible" /> - + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/fragment_notice.xml b/OneToOne/src/main/res/layout/fragment_notice.xml index a0b4db6d0..890b17b89 100644 --- a/OneToOne/src/main/res/layout/fragment_notice.xml +++ b/OneToOne/src/main/res/layout/fragment_notice.xml @@ -112,5 +112,14 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/item_home_recommend.xml b/OneToOne/src/main/res/layout/item_home_recommend.xml index bc2b7a325..ffa7bcfb1 100644 --- a/OneToOne/src/main/res/layout/item_home_recommend.xml +++ b/OneToOne/src/main/res/layout/item_home_recommend.xml @@ -55,12 +55,14 @@ + android:orientation="horizontal"> 0 + app:srcCompat="@drawable/rc_ext_toggle_voice1" /> + android:background="@color/yellow" + android:src="@mipmap/ic_msg_add" + android:visibility="gone" /> + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/view_inter_empty.xml b/OneToOne/src/main/res/layout/view_inter_empty.xml new file mode 100644 index 000000000..4f04076b0 --- /dev/null +++ b/OneToOne/src/main/res/layout/view_inter_empty.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/view_notice_empty.xml b/OneToOne/src/main/res/layout/view_notice_empty.xml new file mode 100644 index 000000000..48c1d808a --- /dev/null +++ b/OneToOne/src/main/res/layout/view_notice_empty.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/view_system_empty.xml b/OneToOne/src/main/res/layout/view_system_empty.xml new file mode 100644 index 000000000..b523dde5a --- /dev/null +++ b/OneToOne/src/main/res/layout/view_system_empty.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/mipmap-xxhdpi/diamond.png b/OneToOne/src/main/res/mipmap-xxhdpi/diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..30b877d981989835c953272cb0f79e9da2c321c9 GIT binary patch literal 7095 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 diff --git a/OneToOne/src/main/res/values-zh-rHK/strings.xml b/OneToOne/src/main/res/values-zh-rHK/strings.xml index 3032b24eb..6fbeeb10e 100644 --- a/OneToOne/src/main/res/values-zh-rHK/strings.xml +++ b/OneToOne/src/main/res/values-zh-rHK/strings.xml @@ -35,11 +35,11 @@ 最多選 %1$s 張圖片哦 暫無好友消息~ 餘額不足 - 文字聊天每條續消耗%s鑽,您可通過充值獲取更多鑽石,以便繼續聊天 + 文字聊天每條續消耗%s鑽,您可通過充值獲取更多星幣以便繼續聊天 - 與TA視頻聊天每分鐘續消耗%s鑽石,您可通過充值獲取更多鑽石,以便繼續聊天 - 與TA語音聊天每分鐘續消耗%s鑽石,您可通過充值獲取更多鑽石,以便繼續聊天 - 聊天每條續消耗%s鑽,您可通過充值獲取更多鑽石,以便繼續聊天 + 與TA視頻聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天 + 與TA語音聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天 + 聊天每條續消耗%s鑽,您可通過充值獲取更多星幣以便繼續聊天 離開 去充值 發起視頻通話\n%s鑽/分鐘 @@ -263,4 +263,5 @@ 收下獎勵 發送任意禮物后即可解鎖 + 余额不足,请充值后再进行尝试吧~ \ No newline at end of file diff --git a/OneToOne/src/main/res/values-zh-rTW/strings.xml b/OneToOne/src/main/res/values-zh-rTW/strings.xml index 3032b24eb..6fbeeb10e 100644 --- a/OneToOne/src/main/res/values-zh-rTW/strings.xml +++ b/OneToOne/src/main/res/values-zh-rTW/strings.xml @@ -35,11 +35,11 @@ 最多選 %1$s 張圖片哦 暫無好友消息~ 餘額不足 - 文字聊天每條續消耗%s鑽,您可通過充值獲取更多鑽石,以便繼續聊天 + 文字聊天每條續消耗%s鑽,您可通過充值獲取更多星幣以便繼續聊天 - 與TA視頻聊天每分鐘續消耗%s鑽石,您可通過充值獲取更多鑽石,以便繼續聊天 - 與TA語音聊天每分鐘續消耗%s鑽石,您可通過充值獲取更多鑽石,以便繼續聊天 - 聊天每條續消耗%s鑽,您可通過充值獲取更多鑽石,以便繼續聊天 + 與TA視頻聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天 + 與TA語音聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天 + 聊天每條續消耗%s鑽,您可通過充值獲取更多星幣以便繼續聊天 離開 去充值 發起視頻通話\n%s鑽/分鐘 @@ -263,4 +263,5 @@ 收下獎勵 發送任意禮物后即可解鎖 + 余额不足,请充值后再进行尝试吧~ \ No newline at end of file diff --git a/OneToOne/src/main/res/values/strings.xml b/OneToOne/src/main/res/values/strings.xml index 3d6c38e22..fb13bf9eb 100644 --- a/OneToOne/src/main/res/values/strings.xml +++ b/OneToOne/src/main/res/values/strings.xml @@ -36,12 +36,12 @@ friend empty 餘額不足 - "文字聊天每條續消耗%s鑽,您可通過充值獲取更多鑽石,以便繼續聊天" + "文字聊天每條續消耗%s鑽,您可通過充值獲取更多星幣以便繼續聊天" - 與TA視頻聊天每分鐘續消耗%s鑽石,您可通過充值獲取更多鑽石,以便繼續聊天 - 與TA语音聊天每分鐘續消耗%s鑽石,您可通過充值獲取更多鑽石,以便繼續聊天 - 聊天每條續消耗%s鑽,您可通過充值獲取更多鑽石,以便繼續聊天 + 與TA視頻聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天 + 與TA语音聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天 + 聊天每條續消耗%s鑽,您可通過充值獲取更多星幣以便繼續聊天 離開 去充值 发起视频通话\n%s钻/分钟 @@ -265,4 +265,5 @@ 收下獎勵 發送任意禮物后即可解鎖 + 余额不足,请充值后再进行尝试吧~ \ No newline at end of file diff --git a/live/src/main/res/layout/rc_extension_input_panel.xml b/live/src/main/res/layout/rc_extension_input_panel.xml index f884747f1..b80d6456e 100644 --- a/live/src/main/res/layout/rc_extension_input_panel.xml +++ b/live/src/main/res/layout/rc_extension_input_panel.xml @@ -3,8 +3,9 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" + android:layout_height="wrap_content" android:visibility="gone" - android:layout_height="wrap_content"> + tools:visibility="visible"> @@ -32,7 +33,8 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/input_panel_emoji_btn" app:layout_constraintStart_toEndOf="@+id/input_panel_voice_toggle" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible" /> + app:layout_constraintEnd_toStartOf="@+id/input_panel_add_or_send" + app:layout_constraintTop_toTopOf="parent" />