package com.shayu.onetoone.activity; 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.AppContext; import com.lxj.xpopup.XPopup; 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.activity.fragments.message.MsgMessageFragment; import com.shayu.onetoone.activity.message.ChatActivity; import com.shayu.onetoone.bean.MatchingItemSizeBean; import com.shayu.onetoone.bean.SendConsumeBean; import com.shayu.onetoone.dialog.FirstTipsDialog; import com.shayu.onetoone.event.HomeBusEvent; import com.shayu.onetoone.event.MessageMsgBusEvent; 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.shayu.onetoone.utils.UserManager; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.bean.ConfigBean; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.interfaces.CommonCallback; import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.manager.APKManager; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.manager.imrongcloud.RongcloudIMManager; import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.DialogUitl; import com.yunbao.common.utils.SpUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.VersionUtil; import com.yunbao.common.views.APKUpdateCustomPopup; import com.yunbao.common.views.APKUpdateOneToOnePopup; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.List; import io.rong.imkit.manager.UnReadMessageManager; import io.rong.imlib.RongIMClient; import io.rong.imlib.model.Conversation; 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; private long mLastClickBackTime;//上次点击back键的时间 @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(); //checkVersion(); } /** * 检查版本更新 */ private void checkVersion() { CommonAppConfig.getInstance().getConfig(new CommonCallback() { @Override public void callback(ConfigBean configBean) { if (configBean != null) { if (configBean.getMaintainSwitch() == 1) {//开启维护 DialogUitl.showSimpleTipDialog(mContext, mContext.getString(R.string.main_maintain_notice), configBean.getMaintainTips()); } if (!VersionUtil.isLatest(configBean.getVersion())) { if (!APKManager.get().getApkVerNew()) { new XPopup.Builder(mContext) .isDestroyOnDismiss(true) .dismissOnBackPressed(false) // 按返回键是否关闭弹窗,默认为true .dismissOnTouchOutside(false) // 点击外部是否关闭弹窗,默认为true .asCustom(new APKUpdateOneToOnePopup(MainActivity.this, false)) .show(); } } else { //requestBonus(); } } } }); } 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; } if (data.getChat() == 0) { isMan = IMLoginManager.get(mContext).getUserInfo().getSex() == 1; } if (!isHome && data.getChat() != 0) { isShow = false; } SpUtil.setStringValue("match_data",JSONObject.toJSONString(data)); Bus.get().post(new HomeBusEvent(HomeBusEvent.TYPE_UPDATE_MATCHING, data.getNum())); if (isShow) { new FirstTipsDialog(mContext) .setHome(isHome) .setMan(isMan) .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.putInt("type", ChatActivity.CALL_CHAT_TYPE_MATCH); 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); } }); OTONetManager.getInstance(mContext).setFiled("is_login", "1", null); } else { viewPager.setCurrentItem(2); OTONetManager.getInstance(mContext).setFiled("is_chat", "1", null); } dialog.dismiss(); } }) .showDialog(); } } @Override public void onError(String error) { } }); } @Override protected void onResume() { super.onResume(); checkUserInfoIsSet(); initFirstLoginTips(); } /** * 检测用户是否设置个人信息 */ private void checkUserInfoIsSet() { OTONetManager.getInstance(mContext).getBaseInfos(false, new com.yunbao.common.http.base.HttpCallback() { @Override public void onSuccess(com.shayu.onetoone.bean.UserBean data) { UserManager.saveUserBean(data); if (data.getStatus() == 0) { RouteManager.forwardCompleteActivity(); } } @Override public void onError(String error) { } }); } private void showRedPoint(int count) { //大于0则是通过会话未读监听器获取到的数,则不用再调用获取未读数接口了 if (count >= 0) { updateUnreadCount(MsgMessageFragment.systemPoint + count); Bus.get().post(new MessageMsgBusEvent(MessageMsgBusEvent.TYPE_UPDATE_POINT, MsgMessageFragment.systemPoint + count)); return; } RongIMClient.getInstance().getUnreadCount(new Conversation.ConversationType[]{Conversation.ConversationType.PRIVATE} ,false ,new RongIMClient.ResultCallback() { @Override 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(RongIMClient.ErrorCode e) { } }); } private void updateUnreadCount(int count) { dslTabLayout.setDrawBadge(count > 0); if(count>99){ dslTabLayout.updateTabBadge(2, "99+"); }else { dslTabLayout.updateTabBadge(2, count + ""); } } @Override protected int getLayoutId() { return R.layout.activity_main; } @Override public void onBackPressed() { long curTime = System.currentTimeMillis(); if (curTime - mLastClickBackTime > 2000) { mLastClickBackTime = curTime; ToastUtil.show(R.string.main_click_next_exit); return; } //super.onBackPressed(); AppContext.exit(); } @Subscribe(threadMode = ThreadMode.MAIN) 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); } } } }