265 lines
10 KiB
Java
265 lines
10 KiB
Java
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<BaseFragment> 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<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();
|
||
initFirstLoginTips();
|
||
}
|
||
|
||
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;
|
||
} 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<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.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<com.shayu.onetoone.bean.UserBean>() {
|
||
@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<List<OfficialNoticeBean>>() {
|
||
int point = 0;
|
||
|
||
@Override
|
||
public void onSuccess(List<OfficialNoticeBean> 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<Integer>() {
|
||
@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);
|
||
}
|
||
}
|
||
} |