package com.shayu.onetoone.activity; import android.app.Dialog; import android.os.Bundle; import android.view.View; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.widget.ViewPager2; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.fastjson.JSONObject; import com.angcyo.tablayout.DslTabLayout; import com.angcyo.tablayout.DslTabLayoutConfig; import com.angcyo.tablayout.delegate2.ViewPager2Delegate; import com.shayu.onetoone.R; import com.shayu.onetoone.activity.fragments.BaseFragment; import com.shayu.onetoone.activity.fragments.DynamicFragment; import com.shayu.onetoone.activity.fragments.FriendsFragment; import com.shayu.onetoone.activity.fragments.MessageFragment; import com.shayu.onetoone.activity.fragments.MyFragment; import com.shayu.onetoone.bean.JoinAnchorBean; import com.shayu.onetoone.bean.MatchingItemSizeBean; import com.shayu.onetoone.bean.OfficialNoticeBean; import com.shayu.onetoone.bean.SendConsumeBean; import com.shayu.onetoone.dialog.FirstTipsDialog; import com.shayu.onetoone.dialog.TipsDialog; import com.shayu.onetoone.event.HomeBusEvent; import com.shayu.onetoone.event.MessageMsgBusEvent; import com.shayu.onetoone.listener.OnDialogClickListener; import com.shayu.onetoone.listener.OnSendMessageListener; import com.shayu.onetoone.manager.CallClientManager; import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.RouteManager; import com.shayu.onetoone.manager.SendMessageManager; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.manager.NoviceInstructorManager; import com.yunbao.common.manager.imrongcloud.RongcloudIMManager; import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.List; import io.rong.imkit.RongIM; import io.rong.imkit.manager.UnReadMessageManager; import io.rong.imkit.userinfo.RongUserInfoManager; import io.rong.imlib.RongIMClient; import io.rong.imlib.model.Conversation; import io.rong.imlib.model.UserInfo; import kotlin.Unit; import kotlin.jvm.functions.Function1; import kotlin.jvm.functions.Function4; /** * 主页Activity */ @Route(path = RouteManager.ACTIVITY_MAIN) public class MainActivity extends AbsOTOActivity { List fragments = new ArrayList<>(); private ViewPager2 viewPager; private DslTabLayout dslTabLayout; @Override protected void onDestroy() { super.onDestroy(); Bus.getOff(this); } @Override protected void main(Bundle savedInstanceState) { Bus.getOn(this); fragments.add(new FriendsFragment()); fragments.add(new DynamicFragment()); fragments.add(new MessageFragment()); fragments.add(new MyFragment()); viewPager = findViewById(R.id.viewPager); dslTabLayout = findViewById(R.id.dslTabLayout); viewPager.setAdapter(new FragmentStateAdapter(this) { @NonNull @Override public Fragment createFragment(int position) { return fragments.get(position); } @Override public int getItemCount() { return fragments.size(); } }); viewPager.setUserInputEnabled(false); ViewPager2Delegate.Companion.install(viewPager, dslTabLayout, false); dslTabLayout.configTabLayoutConfig(new Function1() { @Override public Unit invoke(DslTabLayoutConfig dslTabLayoutConfig) { dslTabLayoutConfig.setOnSelectItemView(new Function4() { @Override public Boolean invoke(View itemView, Integer index, Boolean select, Boolean fromUse) { if (select) { viewPager.setCurrentItem(index); } return false; } }); return null; } }); RongcloudIMManager.connectIM(mContext); showRedPoint(-1); UnReadMessageManager.getInstance().addObserver(new Conversation.ConversationType[]{Conversation.ConversationType.SYSTEM, Conversation.ConversationType.PRIVATE}, new UnReadMessageManager.IUnReadMessageObserver() { @Override public void onCountChanged(int count) { showRedPoint(count); } }); CallClientManager.getManager(); initFirstLoginTips(); } private void initFirstLoginTips() { OTONetManager.getInstance(mContext) .getMatchingNum(new HttpCallback() { @Override public void onSuccess(MatchingItemSizeBean data) { boolean isHome = false; boolean isMan = false; boolean isShow = true; if (data.getLogin() == 0) { isHome = true; } else if (data.getChat() == 0) { isMan = IMLoginManager.get(mContext).getUserInfo().getSex() == 1; } else { isShow = false; } Bus.get().post(new HomeBusEvent(HomeBusEvent.TYPE_UPDATE_MATCHING, data.getNum())); if (isShow) { new FirstTipsDialog(mContext) .setHome(isMan) .setMan(isHome) .setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(FirstTipsDialog dialog, int position) { if (position == 0) { SendMessageManager.matching(new OnSendMessageListener() { @Override public void onSuccess(String token, SendConsumeBean bean) { super.onSuccess(token, bean); Bundle bundle = new Bundle(); bundle.putString("data", JSONObject.toJSONString(bean)); RouteManager.forwardActivity(RouteManager.ACTIVITY_MATCHING, bundle); } @Override public void onError(int status, String msg, SendConsumeBean bean) { super.onError(status, msg, bean); RouteManager.forwardActivity(RouteManager.ACTIVITY_MATCHING); } }); } else { viewPager.setCurrentItem(2); } dialog.dismiss(); } }) .showDialog(); } } @Override public void onError(String error) { } }); } @Override protected void onResume() { super.onResume(); checkUserInfoIsSet(); } /** * 检测用户是否设置个人信息 */ private void checkUserInfoIsSet() { OTONetManager.getInstance(mContext).getBaseInfos(true, new com.yunbao.common.http.base.HttpCallback() { @Override public void onSuccess(com.shayu.onetoone.bean.UserBean data) { if (data.getStatus() == 0) { RouteManager.forwardCompleteActivity(); } } @Override public void onError(String error) { } }); } private void showRedPoint(int count) { OTONetManager.getInstance(mContext).getMessageSystemLists(new HttpCallback>() { int point = 0; @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) { } }); } @Override public void onError(String error) { } }); } private void updateUnreadCount(int count) { dslTabLayout.setDrawBadge(count > 0); dslTabLayout.updateTabBadge(2, count + ""); } @Override protected int getLayoutId() { return R.layout.activity_main; } @Subscribe(threadMode = ThreadMode.MAIN) public void busEvent(MessageMsgBusEvent event) { if (event.getType() == MessageMsgBusEvent.TYPE_ALL_READ) { updateUnreadCount(0); } } }