313 lines
13 KiB
Java
313 lines
13 KiB
Java
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<BaseFragment> 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<DslTabLayoutConfig, Unit>() {
|
||
@Override
|
||
public Unit invoke(DslTabLayoutConfig dslTabLayoutConfig) {
|
||
dslTabLayoutConfig.setOnSelectItemView(new Function4<View, Integer, Boolean, Boolean, Boolean>() {
|
||
@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<ConfigBean>() {
|
||
@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<MatchingItemSizeBean>() {
|
||
@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<FirstTipsDialog>() {
|
||
@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<com.shayu.onetoone.bean.UserBean>() {
|
||
@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<Integer>() {
|
||
@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);
|
||
}
|
||
}
|
||
}
|
||
} |