diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8f70aa85b..0caf31dc9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -627,10 +627,7 @@
android:name=".home.activity.CollectionRoomActivity"
android:label="收藏房间"
android:screenOrientation="portrait" />
-
+
* 管理限制进房
*/
private LimitEnterRoomHelper limitEnterRoomHelper;
-
+ private HomeViewModel homeViewModel;
@Nullable
private Fragment tempFragment = null;
private final SparseArray fragmentArray = new SparseArray<>();
@@ -278,7 +280,7 @@ public class MainActivity extends BaseMvpActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
+ homeViewModel = new ViewModelProvider(this).get(HomeViewModel.class);
NimMiddleActivity.firstEnter = false;
if (savedInstanceState != null) {
mCurrentMainPosition = savedInstanceState.getInt(Constants.KEY_MAIN_POSITION);
@@ -859,7 +861,7 @@ public class MainActivity extends BaseMvpActivity
checkProtocolUpdate();
// 互动消息未读数量
- HomeModel.get().getUnreadCount(AuthModel.get().getCurrentUid())
+ HomeModel.INSTANCE.getUnreadCount(AuthModel.get().getCurrentUid())
.compose(bindUntilEvent(ActivityEvent.DESTROY))
.subscribe((integer, throwable) -> {
if (integer != null) {
diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java
index a5403f1ac..628f561d1 100644
--- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java
+++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java
@@ -1505,7 +1505,7 @@ public class HomePartyRoomFragment extends BaseMvpFragment {
if (type == 0) {// 幸运许愿池(默认)
diff --git a/app/src/main/java/com/yizhuan/erban/base/BaseViewModel.java b/app/src/main/java/com/yizhuan/erban/base/BaseVM.java
similarity index 74%
rename from app/src/main/java/com/yizhuan/erban/base/BaseViewModel.java
rename to app/src/main/java/com/yizhuan/erban/base/BaseVM.java
index c80c23a01..31dde55aa 100644
--- a/app/src/main/java/com/yizhuan/erban/base/BaseViewModel.java
+++ b/app/src/main/java/com/yizhuan/erban/base/BaseVM.java
@@ -4,6 +4,6 @@ package com.yizhuan.erban.base;
* Created by huangmeng1 on 2018/5/7.
*/
-public class BaseViewModel {
+public class BaseVM {
}
diff --git a/app/src/main/java/com/yizhuan/erban/base/BaseViewModel.kt b/app/src/main/java/com/yizhuan/erban/base/BaseViewModel.kt
new file mode 100644
index 000000000..f57abc646
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/base/BaseViewModel.kt
@@ -0,0 +1,30 @@
+package com.yizhuan.erban.base
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewModelScope
+import com.yizhuan.xchat_android_core.utils.toast
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.launch
+
+open class BaseViewModel : ViewModel() {
+
+ fun safeLaunch(
+ onError: (e: Throwable) -> Unit = { it.message.toast() },
+ onComplete: (() -> Unit)? = null,
+ block: suspend CoroutineScope.() -> Unit
+ ) {
+ viewModelScope.launch {
+ try {
+ block()
+ } catch (e: Throwable) {
+ e.printStackTrace()
+ onError(e)
+ } finally {
+ onComplete?.invoke()
+ }
+
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/home/HomeViewModel.kt b/app/src/main/java/com/yizhuan/erban/home/HomeViewModel.kt
new file mode 100644
index 000000000..a2874af83
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/home/HomeViewModel.kt
@@ -0,0 +1,36 @@
+package com.yizhuan.erban.home
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import com.yizhuan.erban.base.BaseViewModel
+import com.yizhuan.xchat_android_core.bean.response.ListResult
+import com.yizhuan.xchat_android_core.home.bean.BannerInfo
+import com.yizhuan.xchat_android_core.home.bean.HomeRoom
+import com.yizhuan.xchat_android_core.home.model.HomeModel
+
+class HomeViewModel : BaseViewModel() {
+
+ private val _bannerLiveData = MutableLiveData>()
+ val bannerLiveData: LiveData> = _bannerLiveData
+
+ private val _hotRoomLiveData = MutableLiveData>()
+ val hotRoomLiveData: LiveData> = _hotRoomLiveData
+
+ fun getBannerInfo() {
+ safeLaunch {
+ _bannerLiveData.value = HomeModel.getHomeBanner("9")
+ }
+ }
+
+ fun getHotRoom(pageNum: Int, pageSize: Int) {
+ safeLaunch(
+ onError = {
+ _hotRoomLiveData.value = ListResult.failed(pageNum)
+ },
+ block = {
+ val result = HomeModel.getHotRoom(pageNum, pageSize)
+ _hotRoomLiveData.value = ListResult.success(result, pageNum)
+ }
+ )
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/home/activity/HomeMoreRoomActivity.java b/app/src/main/java/com/yizhuan/erban/home/activity/HomeMoreRoomActivity.java
deleted file mode 100644
index 9051398c1..000000000
--- a/app/src/main/java/com/yizhuan/erban/home/activity/HomeMoreRoomActivity.java
+++ /dev/null
@@ -1,209 +0,0 @@
-package com.yizhuan.erban.home.activity;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.viewpager.widget.ViewPager;
-
-import com.netease.nim.uikit.StatusBarUtil;
-import com.yizhuan.erban.R;
-import com.yizhuan.erban.avroom.activity.AVRoomActivity;
-import com.yizhuan.erban.avroom.adapter.RoomContributeListAdapter;
-import com.yizhuan.erban.avroom.ktv.KtvMusicManager;
-import com.yizhuan.erban.base.BaseMvpActivity;
-import com.yizhuan.erban.home.adapter.HomeConcernsAdapter;
-import com.yizhuan.erban.home.adapter.MainMagicIndicatorAdapter;
-import com.yizhuan.erban.home.fragment.HomeTabMapFragment;
-import com.yizhuan.erban.home.helper.OpenRoomHelper;
-import com.yizhuan.erban.home.presenter.MainFragmentPresenter;
-import com.yizhuan.erban.home.view.IMainFragmentView;
-import com.yizhuan.erban.service.DaemonService;
-import com.yizhuan.erban.ui.widget.OnPageSelectedListener;
-import com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator;
-import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper;
-import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
-import com.yizhuan.erban.ui.widget.recyclerview.decoration.VerticalDecoration;
-import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
-import com.yizhuan.xchat_android_core.home.bean.HomeConcernsInfo;
-import com.yizhuan.xchat_android_core.home.bean.HomeTagInfo;
-import com.yizhuan.xchat_android_core.home.bean.TagListInfo;
-import com.yizhuan.xchat_android_core.manager.AudioEngineManager;
-import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
-import com.yizhuan.xchat_android_core.statistic.StatisticManager;
-import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
-import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
-import com.yizhuan.xchat_android_library.utils.ListUtils;
-import com.yizhuan.xchat_android_library.utils.SizeUtils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
-@CreatePresenter(MainFragmentPresenter.class)
-public class HomeMoreRoomActivity extends BaseMvpActivity implements IMainFragmentView, MainMagicIndicatorAdapter.OnItemSelectListener {
-
- @BindView(R.id.magic_indicator)
- MagicIndicator magicIndicator;
- @BindView(R.id.view_pager)
- ViewPager viewPager;
- @BindView(R.id.rv_follow_room)
- RecyclerView rvFollowRoom;
- private HomeConcernsAdapter mFollowRoomsAdapter;
- private List mFragments;
-
- public static void start(Context context) {
- Intent intent = new Intent(context, HomeMoreRoomActivity.class);
- context.startActivity(intent);
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_home_more_room);
- ButterKnife.bind(this);
- initWhiteTitleBar("房间");
- initRoomTitleTab();
- initRoomConcern();
- }
-
- private void initRoomTitleTab() {
- getMvpPresenter().getHomeTag();
- }
-
- private void initRoomConcern() {
- mFollowRoomsAdapter = new HomeConcernsAdapter(null, context);
- rvFollowRoom.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
- rvFollowRoom.addItemDecoration(new VerticalDecoration(SizeUtils.dp2px(this, 10), false, true));
- mFollowRoomsAdapter.setOnItemClickListener((adapter, view, position) -> {
- StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_INTO_DBRUK_CLICK, "点击顶部我的房间/关注进入房间");
- if (position == 0) {
- OpenRoomHelper.openRoom(this);
- return;
- }
- HomeConcernsInfo homeConcernsInfo = mFollowRoomsAdapter.getItem(position);
- if (homeConcernsInfo != null) {
- AVRoomActivity.startForFromType(this, homeConcernsInfo.getRoomUid(),
- AVRoomActivity.FROM_TYPE_USER, homeConcernsInfo.getName(), String.valueOf(homeConcernsInfo.getFollowedUid()));
- }
- });
- rvFollowRoom.setAdapter(mFollowRoomsAdapter);
- getMvpPresenter().getHomeConcerns();
- }
-
- @Override
- public void onItemSelect(int position, TextView view) {
-
- if (mFragments == null || mFragments.isEmpty()) {
- return;
- }
- Fragment fragment = mFragments.get(position);
- if (fragment == null) {
- return;
- }
- viewPager.setCurrentItem(position);
-
- }
-
-
- @Override
- public void requestOpenRoomResult(int openRoomFailType, Object... arg) {
-
- }
-
- @Override
- public void showByMarketCheckingStatus(List tagListInfoList) {
-
- }
-
- @Override
- public void getFollowRoomsSuccess(List list) {
- if (list != null && list.size() > 0) {
- rvFollowRoom.setVisibility(View.VISIBLE);
- mFollowRoomsAdapter.setNewData(list);
- } else {
- rvFollowRoom.setVisibility(View.GONE);
- }
- }
-
- @Override
- public void getFollowRoomFail() {
-
- }
-
- @Override
- public void exitRoom(RoomInfo roomInfo) {
- //ktv退出的时候需要用到
- if (AudioEngineManager.get().isOpenKtv() && roomInfo != null) {
- KtvMusicManager.INSTANCE.deleteUserAllChooseMusic(roomInfo.getUid()).subscribe();
- AudioEngineManager.get().closeKtvModel();
- }
- DaemonService.stop(HomeMoreRoomActivity.this);
- }
-
-
- @Override
- public void onGetHomeBannerSuccess(List bannerInfos) {
-
- }
-
- @Override
- public void onGetHomeTagSuccess(List info) {
- List mTabInfoList = new ArrayList<>();
- if (!ListUtils.isListEmpty(mFragments)) {
- mFragments.clear();
- }
- mFragments = new ArrayList<>();
- for (int i = 0; i < info.size(); i++) {
- //过滤对象是空和没有标签名同时也没有子标签的情况
- CharSequence title;
- int tabId;
- Fragment fragment;
- String name = info.get(i).getName();
- if (name != null) {
- name = name.trim();
- }
- title = name;
- tabId = info.get(i).getId();
- fragment = HomeTabMapFragment.newInstance(tabId);
- mFragments.add(fragment);
- mTabInfoList.add(title);
- }
-
- CommonNavigator commonNavigator = new CommonNavigator(HomeMoreRoomActivity.this);
- MainMagicIndicatorAdapter magicIndicatorAdapter = new MainMagicIndicatorAdapter(HomeMoreRoomActivity.this, mTabInfoList, true);
- magicIndicatorAdapter.setOnItemSelectListener(this);
- commonNavigator.setTitleWrapContent(true);
- commonNavigator.setAdapter(magicIndicatorAdapter);
- magicIndicator.setNavigator(commonNavigator);
- commonNavigator.getTitleContainer().setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
- viewPager.setOffscreenPageLimit(5);
- viewPager.setAdapter(new RoomContributeListAdapter(getSupportFragmentManager(), mFragments));
- viewPager.addOnPageChangeListener(new OnPageSelectedListener() {
- @Override
- public void onPageSelected(int position) {
-
- }
- });
- ViewPagerHelper.bind(magicIndicator, viewPager);
- }
-
- @Override
- protected boolean needSteepStateBar() {
- return true;
- }
-
- @Override
- protected void setStatusBar() {
- super.setStatusBar();
- StatusBarUtil.transparencyBar(this);
- }
-}
diff --git a/app/src/main/java/com/yizhuan/erban/home/adapter/HotRoomAdapter.kt b/app/src/main/java/com/yizhuan/erban/home/adapter/HotRoomAdapter.kt
new file mode 100644
index 000000000..1c786a461
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/home/adapter/HotRoomAdapter.kt
@@ -0,0 +1,27 @@
+package com.yizhuan.erban.home.adapter
+
+import android.widget.ImageView
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.BaseViewHolder
+import com.yizhuan.erban.R
+import com.yizhuan.erban.avroom.activity.AVRoomActivity
+import com.yizhuan.erban.ui.utils.load
+import com.yizhuan.xchat_android_core.home.bean.HomeRoom
+
+
+class HotRoomAdapter : BaseQuickAdapter(R.layout.item_room_common) {
+
+
+ override fun convert(helper: BaseViewHolder, item: HomeRoom) {
+ helper.apply {
+ getView(R.id.iv_room_image).load(item.avatar, 8f)
+ setText(R.id.tv_online_number, "${item.onlineNum}人热聊中")
+ setText(R.id.tv_room_title, item.title)
+ setText(R.id.tv_room_tag, item.roomTag)
+ itemView.setOnClickListener {
+ AVRoomActivity.start(mContext, item.uid)
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/home/adapter/MainMagicIndicatorAdapter.java b/app/src/main/java/com/yizhuan/erban/home/adapter/MainMagicIndicatorAdapter.java
index ee1bd7596..58b89f0eb 100644
--- a/app/src/main/java/com/yizhuan/erban/home/adapter/MainMagicIndicatorAdapter.java
+++ b/app/src/main/java/com/yizhuan/erban/home/adapter/MainMagicIndicatorAdapter.java
@@ -1,14 +1,12 @@
package com.yizhuan.erban.home.adapter;
import android.content.Context;
-
-import androidx.core.content.ContextCompat;
-
-import android.graphics.Color;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
+import androidx.core.content.ContextCompat;
+
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.widget.XRecyclerView.ScaleTransitionPagerTitleView;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
@@ -39,10 +37,10 @@ public class MainMagicIndicatorAdapter extends CommonNavigatorAdapter {
@Override
public IPagerTitleView getTitleView(Context context, final int i) {
ScaleTransitionPagerTitleView scaleTransitionPagerTitleView = new ScaleTransitionPagerTitleView(context, true);
- scaleTransitionPagerTitleView.setNormalColor(ContextCompat.getColor(context,R.color.text_secondary_4f516a));
- scaleTransitionPagerTitleView.setSelectedColor(Color.WHITE);
- scaleTransitionPagerTitleView.setMinScale(0.8f);
- scaleTransitionPagerTitleView.setTextSize(16);
+ scaleTransitionPagerTitleView.setNormalColor(ContextCompat.getColor(context,R.color.color_444444));
+ scaleTransitionPagerTitleView.setSelectedColor(ContextCompat.getColor(context,R.color.color_333333));
+ scaleTransitionPagerTitleView.setMinScale(0.83f);
+ scaleTransitionPagerTitleView.setTextSize(24);
int padding = UIUtil.dip2px(context, 5);
scaleTransitionPagerTitleView.setPadding(padding, 0, padding, 0);
scaleTransitionPagerTitleView.setText(mTitleList.get(i));
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeDynamicFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeDynamicFragment.java
deleted file mode 100644
index 744ebd209..000000000
--- a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeDynamicFragment.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package com.yizhuan.erban.home.fragment;
-
-import android.annotation.SuppressLint;
-import android.graphics.Rect;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.Nullable;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.netease.nim.uikit.common.util.sys.ScreenUtil;
-import com.yizhuan.erban.R;
-import com.yizhuan.erban.base.BaseFragment;
-import com.yizhuan.erban.common.EmptyViewHelper;
-import com.yizhuan.erban.home.adapter.HomeDynamicAdapter;
-import com.yizhuan.xchat_android_core.home.bean.HomeDynamicInfo;
-import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent;
-import com.yizhuan.xchat_android_core.home.model.GameHomeModel;
-import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent;
-import com.yizhuan.xchat_android_library.utils.ListUtils;
-
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.Unbinder;
-
-/**
- * create by lvzebiao @2020/1/7
- */
-public class HomeDynamicFragment extends BaseFragment {
-
- Unbinder unbinder;
- @BindView(R.id.recycler_view)
- RecyclerView recyclerView;
-
- private HomeDynamicAdapter dynamicAdapter;
- private final List dynamicList = new ArrayList<>();
-
- public static HomeDynamicFragment newInstance() {
- HomeDynamicFragment fragment = new HomeDynamicFragment();
- Bundle bundle = new Bundle();
- fragment.setArguments(bundle);
- return fragment;
- }
-
- @Nullable
- @Override
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- mView = inflater.inflate(R.layout.fragment_home_dynamic, container, false);
- unbinder = ButterKnife.bind(this, mView);
- EventBus.getDefault().register(this);
- return mView;
- }
-
- @Override
- public void initiate() {
- recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
-
- @Override
- public void getItemOffsets(@NotNull Rect outRect, @NotNull View view, @NotNull RecyclerView parent, @NotNull RecyclerView.State state) {
- super.getItemOffsets(outRect, view, parent, state);
- int bottom = ScreenUtil.dip2px(10);
- int top = ScreenUtil.dip2px(5);
- outRect.set(0, top, 0, bottom);
- }
- });
- recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
- dynamicAdapter = new HomeDynamicAdapter(getActivity());
- recyclerView.setAdapter(dynamicAdapter);
- }
-
- @Override
- public void onResume() {
- super.onResume();
- }
-
- @SuppressLint("CheckResult")
- private void getHomeDynamic() {
- GameHomeModel.get().getHomeDynamic().subscribe((serviceResult, throwable) -> {
- if (throwable != null) {
- dynamicAdapter.setEmptyView(EmptyViewHelper.createEmptyView(getContext(),"暂无数据"));
- } else {
- dynamicList.clear();
- dynamicList.addAll(serviceResult);
- if (ListUtils.isListEmpty(dynamicList)) {
- dynamicAdapter.setEmptyView(EmptyViewHelper.createEmptyView(getContext(),"暂无数据"));
- } else {
- dynamicAdapter.setNewData(dynamicList);
- }
- }
- });
- }
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void onLoadLoginUserInfoEvent(LoadLoginUserInfoEvent event) {
- getHomeDynamic();
- }
-
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void onLoadLoginUserInfoEvent(RefreshHomeDataEvent event) {
- getHomeDynamic();
- }
-
- @Override
- public void onDestroyView() {
- EventBus.getDefault().unregister(this);
- super.onDestroyView();
- unbinder.unbind();
- }
-
-}
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFragment.java
deleted file mode 100644
index 5c6b97ffa..000000000
--- a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFragment.java
+++ /dev/null
@@ -1,682 +0,0 @@
-package com.yizhuan.erban.home.fragment;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.GradientDrawable;
-import android.os.Bundle;
-import android.os.Handler;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.coordinatorlayout.widget.CoordinatorLayout;
-import androidx.databinding.DataBindingUtil;
-import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.LinearLayoutManager;
-
-import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
-import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
-import com.bumptech.glide.request.RequestOptions;
-import com.coorchice.library.utils.LogUtils;
-import com.netease.nim.uikit.common.util.sys.ScreenUtil;
-import com.netease.nim.uikit.support.glide.GlideApp;
-import com.scwang.smartrefresh.layout.internal.ProgressDrawable;
-import com.yizhuan.erban.R;
-import com.yizhuan.erban.avroom.activity.AVRoomActivity;
-import com.yizhuan.erban.avroom.adapter.RoomContributeListAdapter;
-import com.yizhuan.erban.base.BaseMvpFragment;
-import com.yizhuan.erban.databinding.FragmentGameHomeBinding;
-import com.yizhuan.erban.home.activity.HomeMoreRoomActivity;
-import com.yizhuan.erban.home.adapter.BannerAdapter;
-import com.yizhuan.erban.home.adapter.HomeAddFriendsAdapter;
-import com.yizhuan.erban.home.adapter.HomeConcernsAdapter;
-import com.yizhuan.erban.home.adapter.MainMagicIndicatorAdapter;
-import com.yizhuan.erban.home.helper.OpenRoomHelper;
-import com.yizhuan.erban.home.presenter.MainFragmentPresenter;
-import com.yizhuan.erban.home.view.IMainFragmentView;
-import com.yizhuan.erban.radish.signin.SignInActivity;
-import com.yizhuan.erban.ui.search.SearchActivity;
-import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
-import com.yizhuan.erban.ui.widget.OnPageSelectedListener;
-import com.yizhuan.erban.ui.widget.higuide.TuTuGuideHelper;
-import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper;
-import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
-import com.yizhuan.erban.ui.widget.recyclerview.decoration.VerticalDecoration;
-import com.yizhuan.erban.ui.widget.rollviewpager.Util;
-import com.yizhuan.erban.ui.widget.rollviewpager.hintview.ColorPointHintView;
-import com.yizhuan.xchat_android_core.UriProvider;
-import com.yizhuan.xchat_android_core.auth.AuthModel;
-import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
-import com.yizhuan.xchat_android_core.home.bean.HomeConcernsInfo;
-import com.yizhuan.xchat_android_core.home.bean.HomePlayInfo;
-import com.yizhuan.xchat_android_core.home.bean.HomeTagInfo;
-import com.yizhuan.xchat_android_core.home.bean.TagListInfo;
-import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent;
-import com.yizhuan.xchat_android_core.home.model.GameHomeModel;
-import com.yizhuan.xchat_android_core.initial.InitialModel;
-import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel;
-import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
-import com.yizhuan.xchat_android_core.statistic.StatisticManager;
-import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
-import com.yizhuan.xchat_android_core.user.UserModel;
-import com.yizhuan.xchat_android_core.user.bean.UserInfo;
-import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent;
-import com.yizhuan.xchat_android_core.user.event.LoginUserInfoUpdateEvent;
-import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
-import com.yizhuan.xchat_android_core.utils.TextUtils;
-import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
-import com.yizhuan.xchat_android_library.utils.ListUtils;
-import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
-import com.yizhuan.xchat_android_library.utils.SizeUtils;
-
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.security.MessageDigest;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-import io.reactivex.Observable;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-
-/**
- * 音游首页
- */
-@CreatePresenter(MainFragmentPresenter.class)
-public class HomeFragment extends BaseMvpFragment
- implements IMainFragmentView, View.OnClickListener, MainMagicIndicatorAdapter.OnItemSelectListener, MainMagicIndicatorAdapter.OnBottomItemSelectListener {
- public static final String TAG = "GameHomeFragment";
- /**
- * 动态
- */
- public static final int TAB_TYPE_DYNAMIC = 0;
- /**
- * 聊天交友
- */
- public static final int TAB_TYPE_PLAY = 1;
- /**
- * 首页Banner
- */
- private static final String BANNER_TYPE = "1";
- @NonNull
- private final List mFragments = new ArrayList<>();
- @NonNull
- private final List mTabInfoList = new ArrayList<>();
- private FragmentGameHomeBinding mBinding;
- private List mFragmentsBottom;
- private boolean needAutoScroll = true;
- private HomeAddFriendsAdapter addFriendsAdapter;
- private BannerAdapter bannerAdapter;
- @Nullable
- private Disposable addFriendsDisposable;
- private boolean isLoaded;
- private HomeConcernsAdapter mFollowRoomsAdapter;
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- EventBus.getDefault().register(this);
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- EventBus.getDefault().unregister(this);
- }
-
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.iv_open_room:
- StatisticManager.Instance().onEvent(StatisticsProtocol.Event.game_homepage_createroom_click, "创建房间按钮");
- OpenRoomHelper.openRoom(getBaseActivity());
- break;
-
- case R.id.tv_search_room:
- StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_SEARCH, "进入搜索页");
- SearchActivity.start(getActivity());
- break;
-
- case R.id.iv_to_sign_in:
- StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_GAME_HOMEPAGE_SIGN_CLICK,
- "签到-首页");
- SignInActivity.start(mContext);
- SharedPreferenceUtils.put("sign_entrance_" + AuthModel.get().getCurrentUid(), 1);
- break;
-
- //首页榜单
- case R.id.iv_ranking:
- StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_RANK_CLICK, "首页_榜单");
- CommonWebViewActivity.start(mContext, UriProvider.getRanking());
- break;
-
- case R.id.tv_room_more:
- HomeMoreRoomActivity.start(mContext);
- break;
- }
- }
-
- @Override
- public int getRootLayoutId() {
- return R.layout.fragment_game_home;
- }
-
- @Override
- public void onFindViews() {
- mBinding = DataBindingUtil.bind(mView);
- }
-
- @Override
- public void onResume() {
- super.onResume();
- }
-
- @Override
- public void onSetListener() {
- mBinding.setClick(this);
- mBinding.setOpenVisible(true);
- }
-
- @Override
- public void initiate() {
- mBinding.rollView.setVisibility(View.GONE);
- initGuide();
- initRefreshView();
- initTitleTab();
- initRoomConcern();
- if (AuthModel.get().getCurrentUid() != 0) {
- tryLoadData(false);
- }
- }
-
- private void initRefreshView() {
- mBinding.refreshLayout.setOnRefreshListener(refreshLayout -> {
- mBinding.refreshLayout.finishRefresh();
- tryLoadData(true);
- getHomeConcern();
- EventBus.getDefault().post(new RefreshHomeDataEvent());
- });
- mBinding.refreshLayout.setEnableOverScrollBounce(false);
- mBinding.refreshHeader.getLastUpdateText().setTextColor(Color.WHITE);
- mBinding.refreshHeader.getTitleText().setTextColor(Color.WHITE);
- mBinding.refreshHeader.setBackgroundResource(R.drawable.bg_shape_home_top);
- ProgressDrawable progressDrawable = new ProgressDrawable();
- progressDrawable.setColor(Color.WHITE);
- mBinding.refreshHeader.getProgressView().setImageDrawable(progressDrawable);
- }
-
- //尝试加载不需要登录就可以加载的数据
- private void tryLoadData(boolean refresh) {
- if (!isLoaded || refresh) {
- isLoaded = true;
- initRoomTitleTab();
- initBanner();
- loadHomPlay();
- UserInfo userInfo = UserModel.get().getCacheLoginUserInfo();
- if (userInfo != null && !TextUtils.isEmptyText(userInfo.getNick())) {
- getHomeConcern();
- }
- }
- }
-
- public void scrollToView() {
- mBinding.appBarLayout.addOnOffsetChangedListener((appBarLayout, i) -> {
- mBinding.refreshLayout.setEnabled(i >= 0);
- });
- mBinding.magicIndicatorBottom.onPageSelected(InitialModel.get().getDefaultHomeTab());
- mBinding.viewPagerBottom.setCurrentItem(InitialModel.get().getDefaultHomeTab());
- if (needAutoScroll) {
- needAutoScroll = false;
- mBinding.coordinatorLayout.post(() -> {
- int distance = mBinding.rvFollowRoom.getMeasuredHeight();
- CoordinatorLayout.Behavior behavior = ((CoordinatorLayout.LayoutParams) mBinding.appBarLayout.getLayoutParams()).getBehavior();
- if (behavior != null)
- behavior.onNestedPreScroll(mBinding.coordinatorLayout, mBinding.appBarLayout, mBinding.rvFollowRoom, 0, distance, new int[]{0, 0}, 0);
- });
- }
- }
-
- /**
- * 推荐房间TAG
- */
- private void initRoomTitleTab() {
- getMvpPresenter().getHomeTag();
- }
-
- /**
- * 初始化动态和聊天交友tab
- */
- private void initTitleTab() {
- List fragmentPos = new ArrayList<>();
- fragmentPos.add(TAB_TYPE_PLAY);
- fragmentPos.add(TAB_TYPE_DYNAMIC);
- List tagList = new ArrayList<>();
- mFragmentsBottom = new ArrayList<>();
-
- tagList.add(getResources().getString(R.string.home_tab_caht));
- tagList.add(getResources().getString(R.string.home_tab_dynamic));
-
- mFragmentsBottom.add(HomePlayFragment.newInstance());
- mFragmentsBottom.add(HomeDynamicFragment.newInstance());
-
- CommonNavigator commonNavigator = new CommonNavigator(getContext());
- commonNavigator.setTitleWrapContent(true);
- MainMagicIndicatorAdapter magicIndicatorAdapter = new MainMagicIndicatorAdapter(getContext(), tagList, false);
- magicIndicatorAdapter.setOnBottomItemSelectListener(this);
- commonNavigator.setAdapter(magicIndicatorAdapter);
- mBinding.magicIndicatorBottom.setNavigator(commonNavigator);
-
- commonNavigator.getTitleContainer().setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
- mBinding.viewPagerBottom.setOffscreenPageLimit(5);
- mBinding.viewPagerBottom.setAdapter(new RoomContributeListAdapter(getChildFragmentManager(), mFragmentsBottom));
- mBinding.viewPagerBottom.addOnPageChangeListener(new OnPageSelectedListener() {
- @Override
- public void onPageSelected(int position) {
- }
- });
-
- ViewPagerHelper.bind(mBinding.magicIndicatorBottom, mBinding.viewPagerBottom);
-
- scrollToView();
- }
-
- @Override
- public void requestOpenRoomResult(int openRoomFailType, Object... arg) {
-
- }
-
- @Override
- public void showByMarketCheckingStatus(List tagListInfoList) {
-
- }
-
- @Override
- public void getFollowRoomsSuccess(List list) {
- if (list != null && list.size() > 0) {
- mBinding.rvFollowRoom.setVisibility(View.VISIBLE);
- mFollowRoomsAdapter.setNewData(list);
- } else {
- mBinding.rvFollowRoom.setVisibility(View.GONE);
- }
- }
-
- @Override
- public void getFollowRoomFail() {
-
- }
-
- @Override
- public void exitRoom(RoomInfo roomInfo) {
-
- }
-
- /**
- * 顶部关注房间
- */
- private void initRoomConcern() {
- mFollowRoomsAdapter = new HomeConcernsAdapter(null, mContext);
- mBinding.rvFollowRoom.setHasFixedSize(true);
- mBinding.rvFollowRoom.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
- mBinding.rvFollowRoom.addItemDecoration(new VerticalDecoration(SizeUtils.dp2px(mContext, 10), false, true));
- mFollowRoomsAdapter.setOnItemClickListener((adapter, view, position) -> {
- StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_INTO_DBRUK_CLICK, "点击顶部我的房间/关注进入房间");
- if (position == 0) {
- StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_INTO_MY_ROOM_CLICK, "首页_进入我的房间");
- OpenRoomHelper.openRoom(getBaseActivity());
- return;
- }
- HomeConcernsInfo homeConcernsInfo = mFollowRoomsAdapter.getItem(position);
- if (homeConcernsInfo != null) {
- AVRoomActivity.startForFromType(mContext, homeConcernsInfo.getRoomUid(),
- AVRoomActivity.FROM_TYPE_USER, homeConcernsInfo.getName(), String.valueOf(homeConcernsInfo.getFollowedUid()));
- }
- });
- mBinding.rvFollowRoom.setAdapter(mFollowRoomsAdapter);
- }
-
- private void getHomeConcern() {
- getMvpPresenter().getHomeConcerns();
- }
-
- /**
- * 推荐房间
- *
- * @param position
- * @param view
- */
- @Override
- public void onItemSelect(int position, TextView view) {
- if (mFragments == null || mFragments.isEmpty()) {
- return;
- }
- Fragment fragment = mFragments.get(position);
- if (fragment == null) {
- return;
- }
- mBinding.viewPager.setCurrentItem(position);
- }
-
- /**
- * 底部动态聊天交友
- *
- * @param position
- * @param view
- */
- @Override
- public void onBottomItemSelect(int position, TextView view) {
- if (mFragmentsBottom == null || mFragmentsBottom.isEmpty()) {
- return;
- }
- Fragment fragment = mFragmentsBottom.get(position);
- if (fragment == null) {
- return;
- }
- mBinding.viewPagerBottom.setCurrentItem(position);
- if (position == 1) {
- StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_HOME_SCREEN_DONG_TAI_CLICK, "首页_聊天交友切换到动态");
- }
- }
-
- @Override
- public void onGetHomeBannerSuccess(List bannerInfos) {
- setBanner(bannerInfos);
- }
-
- @Override
- public void onGetHomeTagSuccess(List info) {
- boolean changed = false;
-
- List oldTabInfoList = new ArrayList<>(mTabInfoList);
-
- for (HomeTagInfo tagInfo : info) {
- if (!oldTabInfoList.contains(tagInfo.getName())) {
- changed = true;
- break;
- }
- }
- //只有HomeTagInfo发生改变才刷新数据,否则刷新当前可见的那个Fragment
- if (changed) {
- LogUtils.e(changed + ":oldTabInfoList");
- mTabInfoList.clear();
- mFragments.clear();
- for (int i = 0; i < info.size(); i++) {
- //过滤对象是空和没有标签名同时也没有子标签的情况
- CharSequence title;
- int tabId;
- Fragment fragment;
- String name = info.get(i).getName();
- if (name != null) {
- name = name.trim();
- }
- title = name;
- mTabInfoList.add(title);
- tabId = info.get(i).getId();
- fragment = HomeTabHomeFragment.newInstance(tabId);
- mFragments.add(fragment);
- }
- CommonNavigator commonNavigator = new CommonNavigator(getContext());
- commonNavigator.setTitleWrapContent(true);
- MainMagicIndicatorAdapter magicIndicatorAdapter = new MainMagicIndicatorAdapter(getContext(), mTabInfoList, false);
- magicIndicatorAdapter.setOnItemSelectListener(this);
- commonNavigator.setAdapter(magicIndicatorAdapter);
- mBinding.magicIndicator.setNavigator(commonNavigator);
- commonNavigator.getTitleContainer().setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
- mBinding.viewPager.setOffscreenPageLimit(5);
- mBinding.viewPager.setAdapter(new RoomContributeListAdapter(getChildFragmentManager(), mFragments));
- ViewPagerHelper.bind(mBinding.magicIndicator, mBinding.viewPager);
- } else {
- for (Fragment fragment : mFragments) {
- if (fragment instanceof LazyLoadFragment) {
- ((LazyLoadFragment) fragment).tryLoadData();
- }
- }
- }
-
-
- }
-
- /**
- * 用户信息更新
- *
- * @param event
- */
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void loadLoginUserInfoEvent(LoginUserInfoUpdateEvent event) {
- refreshData();
- }
-
- /**
- * 用户信息更新
- *
- * @param event
- */
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void loadLoginUserInfoEvent(LoadLoginUserInfoEvent event) {
- refreshData();
- }
-
- private void refreshData() {
- UserInfo userInfo = UserModel.get().getCacheLoginUserInfo();
- assert userInfo != null;
- // 超管不展示开房按钮
- mBinding.setOpenVisible(!(userInfo.getPlatformRole() == 1));
- tryLoadData(false);
- if (!TextUtils.isEmptyText(userInfo.getNick())) {
- getHomeConcern();
- }
-
- }
-
- private void initBanner() {
- getMvpPresenter().getHomeBanner(BANNER_TYPE);
- }
-
- /**
- * 判断是否要显示首页引导
- */
- private void initGuide() {
- mView.postDelayed(() -> {
- if (TuTuGuideHelper.isNeedHiGuide(TuTuGuideHelper.KEY_GUIDE_MAIN_HOME)) {
-
- Activity activity = getActivity();
- if (activity == null) {
- return;
- }
- View rootView = activity.findViewById(android.R.id.content);
- if (!(rootView instanceof FrameLayout)) {
- return;
- }
- TuTuGuideHelper.setNoNeedHiGuide(TuTuGuideHelper.KEY_GUIDE_MAIN_HOME);
- FrameLayout contentView = (FrameLayout) rootView;
- View view = getLayoutInflater().inflate(R.layout.layout_home_guide, contentView, false);
- View skipView = view.findViewById(R.id.tv_skip);
- View logoIconView = view.findViewById(R.id.iv_logo_icon);
- ImageView bgView = view.findViewById(R.id.iv_bg);
- GlideApp.with(activity)
- .load(R.drawable.ic_guide_home_1)
- .apply(RequestOptions.bitmapTransform(new BitmapTransformation() {
-
- @Override
- public void updateDiskCacheKey(MessageDigest messageDigest) {
-
- }
-
- @Override
- protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
- Bitmap bitmap;
- bitmap = Bitmap.createBitmap(toTransform, 0, 0, outWidth, outHeight);
- return bitmap;
- }
-
- }))
- .into(bgView);
- contentView.addView(view, -1, -1);
- skipView.setOnClickListener(v -> contentView.removeView(view));
-
- view.setOnClickListener(v -> {
- if (v.getTag() == null) {
- GlideApp.with(activity)
- .load(R.drawable.ic_guide_home_2)
- .apply(RequestOptions.bitmapTransform(new BitmapTransformation() {
-
- @Override
- public void updateDiskCacheKey(MessageDigest messageDigest) {
-
- }
-
- @Override
- protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
- Bitmap bitmap;
- bitmap = Bitmap.createBitmap(toTransform, 0, 0, outWidth, outHeight);
- return bitmap;
- }
-
- }))
- .into(bgView);
-
- skipView.setVisibility(View.GONE);
- logoIconView.setVisibility(View.VISIBLE);
- v.setTag(1);
-
- } else {
- contentView.removeView(view);
- }
- });
- }
- }, 2000);
-
- }
-
- private void setBanner(List bannerList) {
- //审核中状态,去掉跳转房间banner
- if (MarketVerifyModel.get().isMarketChecking()) {
- Iterator iterator = bannerList.iterator();
- while (iterator.hasNext()) {
- BannerInfo bannerInfo = iterator.next();
- if (bannerInfo.getSkipType() == 2) {
- iterator.remove();
- }
- }
- }
- if (ListUtils.isListEmpty(bannerList)) {
- mBinding.rollView.setVisibility(View.GONE);
- return;
- }
- mBinding.rollView.setVisibility(View.VISIBLE);
- if (bannerAdapter == null) {
- mBinding.rollView.setHintView(new ColorPointHintView(mContext, Color.WHITE, mContext.getResources().getColor(R.color.color_66FFFFFF)) {
- @Override
- public Drawable makeFocusDrawable() {
- GradientDrawable dotFocus = new GradientDrawable();
- dotFocus.setColor(Color.WHITE);
- dotFocus.setCornerRadius(Util.dip2px(getContext(), 2));
- dotFocus.setSize(Util.dip2px(getContext(), 9), Util.dip2px(getContext(), 4));
- return dotFocus;
- }
-
- @Override
- public Drawable makeNormalDrawable() {
- GradientDrawable dotNormal = new GradientDrawable();
- dotNormal.setColor(mContext.getResources().getColor(R.color.color_66FFFFFF));
- dotNormal.setCornerRadius(Util.dip2px(getContext(), 2));
- dotNormal.setSize(Util.dip2px(getContext(), 4), Util.dip2px(getContext(), 4));
- return dotNormal;
- }
- });
-
- bannerAdapter = new BannerAdapter(bannerList, mContext);
- bannerAdapter.setRoundingRadius(ScreenUtil.dip2px(12));
- bannerAdapter.setHomeGame(true);
- mBinding.rollView.setAdapter(bannerAdapter);
- mBinding.rollView.setPlayDelay(3000);
- //设置透明度
- mBinding.rollView.setAnimationDurtion(500);
- }
- bannerAdapter.setBannerInfoList(bannerList);
- bannerAdapter.notifyDataSetChanged();
- }
-
- @SuppressLint("CheckResult")
- private void loadHomPlay() {
- if (addFriendsAdapter == null) {
- mBinding.rvAddFriends.setLayoutManager(new LinearLayoutManager(mContext));
- mBinding.rvAddFriends.setNestedScrollingEnabled(false);
- mBinding.rvAddFriends.setFocusable(false);
- addFriendsAdapter = new HomeAddFriendsAdapter();
- mBinding.rvAddFriends.setAdapter(addFriendsAdapter);
- }
- GameHomeModel.get().getHomePlay()
- .doOnError(throwable -> mBinding.tvAddFriends.setVisibility(View.GONE))
- .subscribe(homePlayList -> {
- if (ListUtils.isListEmpty(homePlayList)) {
- mBinding.tvAddFriends.setVisibility(View.GONE);
- mBinding.rvAddFriends.setVisibility(View.GONE);
- addFriendsAdapter.setNewData(null);
- } else {
- loopHomePlay(homePlayList, true);
- }
- });
- }
-
-
- private void loopHomePlay(final List homePlayList, boolean refresh) {
-
- if (addFriendsDisposable != null && !addFriendsDisposable.isDisposed()) {
- addFriendsDisposable.dispose();
- }
- mBinding.tvAddFriends.setVisibility(View.VISIBLE);
- mBinding.rvAddFriends.setVisibility(View.VISIBLE);
- if (refresh) {
- //两个以内直接setNewData并返回 不循环
- if (homePlayList.size() <= 2) {
- addFriendsAdapter.setNewData(homePlayList);
- return;
- } else {
- addFriendsAdapter.setNewData(new ArrayList<>(homePlayList.subList(0, 2)));
- }
- }
-
- Observable listObservable = Observable.fromIterable(refresh ? new ArrayList<>(homePlayList.subList(2, homePlayList.size())) : homePlayList);
-
- Observable timerObservable = Observable.interval(3000, TimeUnit.MILLISECONDS);
-
- Observable.zip(listObservable, timerObservable, (homePlayInfo, aLong) -> homePlayInfo)
- .observeOn(AndroidSchedulers.mainThread())
- .filter(homePlayInfo -> isResumed() && isVisible())//不可见的时候停止循环,不然重新回来所有动画一起执行,模拟器可能ANR...
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
- addFriendsDisposable = d;
- }
-
- @Override
- public void onNext(@NonNull HomePlayInfo homePlayInfo) {
- addFriendsAdapter.remove(0);
- addFriendsAdapter.addData(homePlayInfo);
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
-
- }
-
- @Override
- public void onComplete() {
- loopHomePlay(homePlayList, false);
- }
- });
- }
-
-}
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFragment.kt b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFragment.kt
new file mode 100644
index 000000000..b877d2542
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFragment.kt
@@ -0,0 +1,90 @@
+package com.yizhuan.erban.home.fragment
+
+import android.view.View
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.databinding.DataBindingUtil
+import androidx.fragment.app.Fragment
+import com.yizhuan.erban.R
+import com.yizhuan.erban.avroom.adapter.RoomContributeListAdapter
+import com.yizhuan.erban.base.BaseFragment
+import com.yizhuan.erban.databinding.FragmentHomeBinding
+import com.yizhuan.erban.home.adapter.MainMagicIndicatorAdapter
+import com.yizhuan.erban.ui.search.SearchActivity
+import com.yizhuan.erban.ui.webview.CommonWebViewActivity
+import com.yizhuan.erban.ui.widget.OnPageSelectedListener
+import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper
+import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
+import com.yizhuan.xchat_android_core.UriProvider
+import com.yizhuan.xchat_android_core.statistic.StatisticManager
+import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol
+import java.util.*
+
+/**
+ * 音游首页
+ */
+class HomeFragment : BaseFragment(), View.OnClickListener,
+ MainMagicIndicatorAdapter.OnBottomItemSelectListener {
+ private lateinit var mBinding: FragmentHomeBinding
+ override fun onClick(v: View) {
+ when (v.id) {
+ R.id.tv_search_room -> {
+ StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_SEARCH, "进入搜索页")
+ SearchActivity.start(activity)
+ }
+
+ R.id.iv_ranking -> {
+ StatisticManager.Instance()
+ .onEvent(StatisticsProtocol.Event.EVENT_HOME_RANK_CLICK, "首页_榜单")
+ CommonWebViewActivity.start(mContext, UriProvider.getRanking())
+ }
+ }
+ }
+
+ override fun getRootLayoutId(): Int {
+ return R.layout.fragment_home
+ }
+
+ override fun onFindViews() {
+ mBinding = DataBindingUtil.bind(mView)!!
+ }
+
+ override fun onSetListener() {
+ mBinding.click = this
+ }
+
+ override fun initiate() {
+ initTitleTab()
+ }
+
+ /**
+ * 初始化推荐和派对tab
+ */
+ private fun initTitleTab() {
+ val fragmentPos: MutableList = ArrayList()
+ val tagList: MutableList = ArrayList()
+ tagList.add("推荐")
+ tagList.add("派对")
+ fragmentPos.add(RecommendFragment.newInstance())
+ fragmentPos.add(PartyFragment.newInstance())
+ val commonNavigator = CommonNavigator(context)
+ commonNavigator.setTitleWrapContent(true)
+ val magicIndicatorAdapter = MainMagicIndicatorAdapter(context, tagList, false)
+ magicIndicatorAdapter.setOnBottomItemSelectListener(this)
+ commonNavigator.adapter = magicIndicatorAdapter
+ mBinding.magicIndicator.navigator = commonNavigator
+ commonNavigator.titleContainer.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE
+ mBinding.viewPager.offscreenPageLimit = 5
+ mBinding.viewPager.adapter =
+ RoomContributeListAdapter(childFragmentManager, fragmentPos)
+ mBinding.viewPager.addOnPageChangeListener(object : OnPageSelectedListener() {
+ override fun onPageSelected(position: Int) {}
+ })
+ ViewPagerHelper.bind(mBinding.magicIndicator, mBinding.viewPager)
+ }
+
+ override fun onBottomItemSelect(position: Int, view: TextView?) {
+ mBinding.viewPager.currentItem = position
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java
index 1fbd9179a..528db2ebe 100644
--- a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java
+++ b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java
@@ -13,6 +13,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.trello.rxlifecycle3.android.FragmentEvent;
import com.yizhuan.erban.R;
+import com.yizhuan.erban.base.BaseFragment;
import com.yizhuan.erban.common.NoDataFragment;
import com.yizhuan.erban.home.adapter.HomeRoomFragmentAdapter;
import com.yizhuan.xchat_android_core.home.bean.HomeTabMapInfo;
@@ -32,7 +33,7 @@ import java.util.concurrent.CancellationException;
/**
*
*/
-public class HomeTabHomeFragment extends LazyLoadFragment {
+public class HomeTabHomeFragment extends BaseFragment {
public static final int ROWS = 3;
private static final String PARAM_TAB_ID = "tabId";
private RecyclerView recyclerView;
@@ -232,14 +233,11 @@ public class HomeTabHomeFragment extends LazyLoadFragment {
@Override
public void initiate() {
-// getData();
- }
-
- @Override
- protected void loadData() {
getData();
}
+
+
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabMapFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabMapFragment.java
deleted file mode 100644
index ddb665117..000000000
--- a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabMapFragment.java
+++ /dev/null
@@ -1,175 +0,0 @@
-package com.yizhuan.erban.home.fragment;
-
-import android.os.Bundle;
-import android.view.View;
-
-import androidx.annotation.Nullable;
-import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
-
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.yizhuan.erban.R;
-import com.yizhuan.erban.base.BaseMvpFragment;
-import com.yizhuan.erban.home.adapter.HomeRoomFragmentAdapter;
-import com.yizhuan.xchat_android_core.home.bean.HomeTabMapInfo;
-import com.yizhuan.erban.home.presenter.HomeTabMapPresenter;
-import com.yizhuan.xchat_android_core.home.IHomeTabMapView;
-import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
-import com.yizhuan.xchat_android_library.utils.ListUtils;
-
-import java.util.List;
-
-/**
- *
- */
-@CreatePresenter(HomeTabMapPresenter.class)
-public class HomeTabMapFragment extends BaseMvpFragment implements IHomeTabMapView, BaseQuickAdapter.RequestLoadMoreListener {
- public static final int ROWS = 2;
- private static final String PARAM_TAB_ID = "tabId";
- private RecyclerView recyclerView;
- private SwipeRefreshLayout swipeRefresh;
- private String tabId;
- private HomeRoomFragmentAdapter mHomeRoomAdapter;
-
- public static HomeTabMapFragment newInstance(int tabId) {
- Bundle args = new Bundle();
- args.putString(PARAM_TAB_ID, String.valueOf(tabId));
- HomeTabMapFragment fragment = new HomeTabMapFragment();
- fragment.setArguments(args);
- return fragment;
- }
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- if (getArguments() != null) {
- tabId = getArguments().getString(PARAM_TAB_ID);
- }
- }
-
- @Override
- public int getRootLayoutId() {
- return R.layout.fragment_home_tab_map;
- }
-
- @Override
- public void onFindViews() {
- recyclerView = mView.findViewById(R.id.recycler_view);
- swipeRefresh = mView.findViewById(R.id.swipe_refresh);
- }
-
- @Override
- public void onSetListener() {
- swipeRefresh.setOnRefreshListener(() -> {
- mHomeRoomAdapter.setEnableLoadMore(true);
- loadData(true);
- });
- }
-
- @Override
- public void initiate() {
- initRecyclerView();
- loadData(true);
- }
-
-
- /**
- * 刷新数据
- */
- private void loadData(boolean isRefresh) {
- getMvpPresenter().loadData(isRefresh,tabId);
- }
-
- @Override
- public View.OnClickListener getLoadMoreListener() {
- return super.getLoadMoreListener();
- }
-
- private void initRecyclerView() {
- recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
- recyclerView.setItemAnimator(null);
- mHomeRoomAdapter = new HomeRoomFragmentAdapter(getContext(),null,false);
- mHomeRoomAdapter.setOnLoadMoreListener(this, recyclerView);
- GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), ROWS);
- recyclerView.setLayoutManager(gridLayoutManager);
- recyclerView.setAdapter(mHomeRoomAdapter);
- }
-
-
-
-
- @Override
- public void setUserVisibleHint(boolean isVisibleToUser) {
- super.setUserVisibleHint(isVisibleToUser);
- }
-
- @Override
- public void homeTabMapSuccess(List list) {
- hideStatus();
- if (mHomeRoomAdapter != null) {
- int page = getMvpPresenter().getPage();
- if (page <= 1) {
- swipeRefresh.setRefreshing(false);
-
- if (list == null || list.size() == 0) {
- showNoData();
- } else {
- mHomeRoomAdapter.setNewData(getMultipleItemData(list));
- }
- }
- }
- }
-
- private List getMultipleItemData(List itemList) {
- if (null==itemList||itemList.size()<=0){
- return null;
- }
-
- for (int i = 0; i < itemList.size(); i++) {
- itemList.get(i).setItemType(HomeTabMapInfo.TYPE_NORMAL);
- }
- return itemList;
- }
-
- @Override
- public void homeTabMapFails(String error) {
- hideStatus();
-
- int page = getMvpPresenter().getPage();
- if (page <= 1) {
- showNoData();
- }
- }
-
- @Override
- public void homeTabMapLoadMoreSuccess(List list) {
- if (ListUtils.isListEmpty(list)){
- mHomeRoomAdapter.loadMoreEnd();
- return;
- }
- mHomeRoomAdapter.addData(list);
- mHomeRoomAdapter.loadMoreComplete();
- }
-
- @Override
- public void homeTabMapLoadMoreFails(String error) {
- hideStatus();
- int page = getMvpPresenter().getPage();
- if (page <= 1) {
- showNoData();
- }
- }
-
- @Override
- public void onReloadData() {
- super.onReloadData();
- loadData(true);
- }
-
- @Override
- public void onLoadMoreRequested() {
- loadData(false);
- }
-}
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/PartyFragment.kt b/app/src/main/java/com/yizhuan/erban/home/fragment/PartyFragment.kt
new file mode 100644
index 000000000..58a2b1599
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/home/fragment/PartyFragment.kt
@@ -0,0 +1,144 @@
+package com.yizhuan.erban.home.fragment
+
+import android.os.Bundle
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.databinding.DataBindingUtil
+import androidx.fragment.app.Fragment
+import com.coorchice.library.utils.LogUtils
+import com.yizhuan.erban.R
+import com.yizhuan.erban.avroom.adapter.RoomContributeListAdapter
+import com.yizhuan.erban.base.BaseFragment
+import com.yizhuan.erban.databinding.FragmentPartyBinding
+import com.yizhuan.erban.home.adapter.MainMagicIndicatorAdapter
+import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper
+import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
+import com.yizhuan.xchat_android_core.auth.AuthModel
+import com.yizhuan.xchat_android_core.home.bean.HomeTagInfo
+import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
+import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
+
+/**
+ * 音游首页
+ */
+class PartyFragment : BaseFragment(), MainMagicIndicatorAdapter.OnItemSelectListener {
+ private lateinit var mBinding: FragmentPartyBinding
+ private var isLoaded = false
+ private val mFragments: ArrayList = ArrayList()
+ private val mTabInfoList: ArrayList = ArrayList()
+
+ companion object{
+ fun newInstance(): PartyFragment {
+ val args = Bundle()
+
+ val fragment = PartyFragment()
+ fragment.arguments = args
+ return fragment
+ }
+ }
+
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ EventBus.getDefault().register(this)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ EventBus.getDefault().unregister(this)
+ }
+
+
+ override fun getRootLayoutId(): Int {
+ return R.layout.fragment_party
+ }
+
+ override fun onFindViews() {
+ mBinding = DataBindingUtil.bind(mView)!!
+ }
+
+ override fun onSetListener() {
+
+ }
+
+ override fun initiate() {
+ if (AuthModel.get().currentUid != 0L) {
+ tryLoadData(false)
+ }
+ }
+
+ //尝试加载不需要登录就可以加载的数据
+ private fun tryLoadData(refresh: Boolean) {
+ if (!isLoaded || refresh) {
+ isLoaded = true
+ }
+ }
+
+
+ fun onGetHomeTagSuccess(info: List) {
+ var changed = false
+ val oldTabInfoList: List = ArrayList(mTabInfoList)
+ for (tagInfo in info) {
+ if (!oldTabInfoList.contains(tagInfo.name)) {
+ changed = true
+ break
+ }
+ }
+ //只有HomeTagInfo发生改变才刷新数据,否则刷新当前可见的那个Fragment
+ if (changed) {
+ LogUtils.e("$changed:oldTabInfoList")
+ mTabInfoList.clear()
+ mFragments.clear()
+ for (i in info.indices) {
+ //过滤对象是空和没有标签名同时也没有子标签的情况
+ var title: CharSequence?
+ var fragment: Fragment?
+ var name = info[i].name
+ if (name != null) {
+ name = name.trim { it <= ' ' }
+ }
+ title = name
+ mTabInfoList.add(title)
+ val tabId: Int = info[i].id
+ fragment = HomeTabHomeFragment.newInstance(tabId)
+ mFragments.add(fragment)
+ }
+ val commonNavigator = CommonNavigator(context)
+ commonNavigator.setTitleWrapContent(true)
+ val magicIndicatorAdapter = MainMagicIndicatorAdapter(context, mTabInfoList, false)
+ magicIndicatorAdapter.setOnItemSelectListener(this)
+ commonNavigator.adapter = magicIndicatorAdapter
+ mBinding.magicIndicator.navigator = commonNavigator
+ commonNavigator.titleContainer.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE
+ mBinding.viewPager.offscreenPageLimit = 5
+ mBinding.viewPager.adapter = RoomContributeListAdapter(
+ childFragmentManager,
+ mFragments
+ )
+ ViewPagerHelper.bind(mBinding.magicIndicator, mBinding.viewPager)
+ } else {
+ for (fragment in mFragments) {
+ if (fragment is LazyLoadFragment) {
+ fragment.tryLoadData()
+ }
+ }
+ }
+ }
+
+ /**
+ * 用户信息更新
+ *
+ * @param event
+ */
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
+ tryLoadData(true)
+ }
+
+ override fun onItemSelect(position: Int, view: TextView?) {
+ mBinding.viewPager.currentItem = position
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/RecommendFragment.kt b/app/src/main/java/com/yizhuan/erban/home/fragment/RecommendFragment.kt
new file mode 100644
index 000000000..7f61df923
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/home/fragment/RecommendFragment.kt
@@ -0,0 +1,245 @@
+package com.yizhuan.erban.home.fragment
+
+import android.graphics.Color
+import android.graphics.drawable.Drawable
+import android.graphics.drawable.GradientDrawable
+import android.os.Bundle
+import android.view.View
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.databinding.DataBindingUtil
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.activityViewModels
+import androidx.fragment.app.viewModels
+import com.netease.nim.uikit.common.util.sys.ScreenUtil
+import com.scwang.smartrefresh.layout.internal.ProgressDrawable
+import com.yizhuan.erban.R
+import com.yizhuan.erban.avroom.adapter.RoomContributeListAdapter
+import com.yizhuan.erban.base.BaseFragment
+import com.yizhuan.erban.databinding.FragmentRecommendBinding
+import com.yizhuan.erban.home.HomeViewModel
+import com.yizhuan.erban.home.adapter.BannerAdapter
+import com.yizhuan.erban.home.adapter.MainMagicIndicatorAdapter
+import com.yizhuan.erban.home.adapter.MainMagicIndicatorAdapter.OnBottomItemSelectListener
+import com.yizhuan.erban.ui.widget.OnPageSelectedListener
+import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper
+import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
+import com.yizhuan.erban.ui.widget.rollviewpager.Util
+import com.yizhuan.erban.ui.widget.rollviewpager.hintview.ColorPointHintView
+import com.yizhuan.xchat_android_core.auth.AuthModel
+import com.yizhuan.xchat_android_core.home.bean.BannerInfo
+import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
+import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel
+import com.yizhuan.xchat_android_core.statistic.StatisticManager
+import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol
+import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent
+import com.yizhuan.xchat_android_core.user.event.LoginUserInfoUpdateEvent
+import com.yizhuan.xchat_android_library.utils.ListUtils
+import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
+import java.util.*
+
+/**
+ * 音游首页
+ */
+class RecommendFragment : BaseFragment(), View.OnClickListener, OnBottomItemSelectListener {
+ private lateinit var mBinding: FragmentRecommendBinding
+ private var mFragmentsBottom: MutableList = ArrayList()
+ private lateinit var bannerAdapter: BannerAdapter
+ private var isLoaded = false
+
+ private val homeViewModel: HomeViewModel by activityViewModels()
+
+ companion object {
+ fun newInstance(): RecommendFragment {
+ val args = Bundle()
+
+ val fragment = RecommendFragment()
+ fragment.arguments = args
+ return fragment
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ EventBus.getDefault().register(this)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ EventBus.getDefault().unregister(this)
+ }
+
+ override fun onClick(v: View) {
+
+ }
+
+ override fun getRootLayoutId(): Int {
+ return R.layout.fragment_recommend
+ }
+
+ override fun onFindViews() {
+ mBinding = DataBindingUtil.bind(mView)!!
+ }
+
+ override fun onSetListener() {
+ mBinding.click = this
+ }
+
+ override fun initiate() {
+ initRefreshView()
+ initTitleTab()
+ if (AuthModel.get().currentUid != 0L) {
+ tryLoadData(false)
+ }
+ childFragmentManager
+ .beginTransaction()
+ .replace(R.id.fg_recommend_room, HomeTabHomeFragment.newInstance(0))
+ .commitAllowingStateLoss()
+
+ homeViewModel.getBannerInfo()
+ homeViewModel.bannerLiveData.observe(this) {
+ setBanner(it)
+ }
+ }
+
+ //尝试加载不需要登录就可以加载的数据
+ private fun tryLoadData(refresh: Boolean) {
+ if (!isLoaded || refresh) {
+ isLoaded = true
+ }
+ }
+
+ private fun initRefreshView() {
+ mBinding.refreshLayout.setOnRefreshListener {
+ mBinding.refreshLayout.finishRefresh()
+ EventBus.getDefault().post(RefreshHomeDataEvent())
+ }
+ mBinding.refreshLayout.isEnableOverScrollBounce = false
+ val themeColor = requireContext().resources.getColor(R.color.color_666666)
+ mBinding.refreshHeader.lastUpdateText.setTextColor(themeColor)
+ mBinding.refreshHeader.titleText.setTextColor(themeColor)
+ mBinding.refreshHeader.setBackgroundColor(Color.TRANSPARENT)
+ val progressDrawable = ProgressDrawable()
+ progressDrawable.setColor(themeColor)
+ mBinding.refreshHeader.progressView.setImageDrawable(progressDrawable)
+ }
+
+
+ /**
+ * 初始化动态和聊天交友tab
+ */
+ private fun initTitleTab() {
+ val tagList: MutableList = ArrayList()
+ tagList.add("热门房间")
+ tagList.add("组队开黑")
+ mFragmentsBottom.add(RoomHotFragment.newInstance())
+ mFragmentsBottom.add(HomePlayFragment.newInstance())
+ val commonNavigator = CommonNavigator(context)
+ commonNavigator.setTitleWrapContent(true)
+ val magicIndicatorAdapter = MainMagicIndicatorAdapter(context, tagList, false)
+ magicIndicatorAdapter.setOnBottomItemSelectListener(this)
+ commonNavigator.adapter = magicIndicatorAdapter
+ mBinding.magicIndicator.navigator = commonNavigator
+ commonNavigator.titleContainer.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE
+ mBinding.viewPager.offscreenPageLimit = 5
+ mBinding.viewPager.adapter =
+ RoomContributeListAdapter(childFragmentManager, mFragmentsBottom)
+ ViewPagerHelper.bind(mBinding.magicIndicator, mBinding.viewPager)
+ }
+
+ /**
+ * 底部动态聊天交友
+ *
+ * @param position
+ * @param view
+ */
+ override fun onBottomItemSelect(position: Int, view: TextView) {
+ if (mFragmentsBottom.isEmpty()) {
+ return
+ }
+ mBinding.viewPager.currentItem = position
+ if (position == 1) {
+ StatisticManager.Instance()
+ .onEvent(StatisticsProtocol.Event.EVENT_HOME_SCREEN_DONG_TAI_CLICK, "首页_聊天交友切换到动态")
+ }
+ }
+
+ /**
+ * 用户信息更新
+ *
+ * @param event
+ */
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun loadLoginUserInfoEvent(event: LoginUserInfoUpdateEvent?) {
+ refreshData()
+ }
+
+ /**
+ * 用户信息更新
+ *
+ * @param event
+ */
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun loadLoginUserInfoEvent(event: LoadLoginUserInfoEvent?) {
+ refreshData()
+ }
+
+ private fun refreshData() {
+ tryLoadData(false)
+ }
+
+ private fun setBanner(bannerList: List) {
+ if (ListUtils.isListEmpty(bannerList)) {
+ mBinding.rollView.visibility = View.GONE
+ return
+ }
+ mBinding.rollView.visibility = View.VISIBLE
+ if (!this::bannerAdapter.isInitialized) {
+ mBinding.rollView.setHintView(object : ColorPointHintView(
+ mContext, Color.WHITE, mContext.resources.getColor(
+ R.color.color_66FFFFFF
+ )
+ ) {
+ override fun makeFocusDrawable(): Drawable {
+ val dotFocus = GradientDrawable()
+ dotFocus.setColor(Color.WHITE)
+ dotFocus.cornerRadius = Util.dip2px(
+ context, 2f
+ ).toFloat()
+ dotFocus.setSize(
+ Util.dip2px(context, 9f), Util.dip2px(
+ context, 4f
+ )
+ )
+ return dotFocus
+ }
+
+ override fun makeNormalDrawable(): Drawable {
+ val dotNormal = GradientDrawable()
+ dotNormal.setColor(mContext.resources.getColor(R.color.color_66FFFFFF))
+ dotNormal.cornerRadius = Util.dip2px(
+ context, 2f
+ ).toFloat()
+ dotNormal.setSize(
+ Util.dip2px(context, 4f), Util.dip2px(
+ context, 4f
+ )
+ )
+ return dotNormal
+ }
+ })
+ bannerAdapter = BannerAdapter(bannerList, mContext)
+ bannerAdapter.setRoundingRadius(ScreenUtil.dip2px(12f))
+ bannerAdapter.setHomeGame(true)
+ mBinding.rollView.setAdapter(bannerAdapter)
+ mBinding.rollView.setPlayDelay(3000)
+ //设置透明度
+ mBinding.rollView.setAnimationDurtion(500)
+ }
+ bannerAdapter.setBannerInfoList(bannerList)
+ bannerAdapter.notifyDataSetChanged()
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/RoomHotFragment.kt b/app/src/main/java/com/yizhuan/erban/home/fragment/RoomHotFragment.kt
new file mode 100644
index 000000000..1af741d1c
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/home/fragment/RoomHotFragment.kt
@@ -0,0 +1,59 @@
+package com.yizhuan.erban.home.fragment
+
+import android.os.Bundle
+import androidx.fragment.app.activityViewModels
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.yizhuan.erban.base.BaseViewBindingFragment
+import com.yizhuan.erban.common.EmptyViewHelper
+import com.yizhuan.erban.databinding.FragmentHotRoomBinding
+import com.yizhuan.erban.home.HomeViewModel
+import com.yizhuan.erban.home.adapter.HotRoomAdapter
+import com.yizhuan.erban.ui.utils.RVDelegate
+import com.yizhuan.xchat_android_core.home.bean.HomeRoom
+
+
+class RoomHotFragment : BaseViewBindingFragment() {
+
+ companion object {
+ fun newInstance(): RoomHotFragment {
+ val args = Bundle()
+ val fragment = RoomHotFragment()
+ fragment.arguments = args
+ return fragment
+ }
+ }
+
+ private val roomHotAdapter = HotRoomAdapter()
+ private var page = 1
+ private lateinit var rvDelegate: RVDelegate
+ private val pageSize = 20
+ private val homeViewModel: HomeViewModel by activityViewModels()
+
+ override fun init() {
+ rvDelegate = RVDelegate.Builder()
+ .setAdapter(roomHotAdapter)
+ .setRecyclerView(binding.recyclerView)
+ .setRefreshLayout(binding.refreshLayout)
+ .setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无房间"))
+ .setLayoutManager(LinearLayoutManager(mContext))
+ .setPageSize(pageSize)
+ .build()
+ roomHotAdapter.setOnLoadMoreListener({ loadData(false) }, binding.recyclerView)
+ binding.refreshLayout.setOnRefreshListener { loadData(true) }
+
+ homeViewModel.hotRoomLiveData.observe(this) {
+ rvDelegate.loadData(it)
+ }
+ loadData(true)
+ }
+
+ private fun loadData(isRefresh: Boolean) {
+ binding.refreshLayout.isRefreshing = isRefresh
+ if (isRefresh) {
+ page = 1
+ } else {
+ page++
+ }
+ homeViewModel.getHotRoom(page, pageSize)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/home/presenter/MainFragmentPresenter.java b/app/src/main/java/com/yizhuan/erban/home/presenter/MainFragmentPresenter.java
index e17442876..4605757f4 100644
--- a/app/src/main/java/com/yizhuan/erban/home/presenter/MainFragmentPresenter.java
+++ b/app/src/main/java/com/yizhuan/erban/home/presenter/MainFragmentPresenter.java
@@ -1,32 +1,18 @@
package com.yizhuan.erban.home.presenter;
-import android.annotation.SuppressLint;
import android.os.Bundle;
import androidx.annotation.Nullable;
-import com.netease.nim.uikit.common.util.log.LogUtil;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.home.view.IMainFragmentView;
-import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
-import com.yizhuan.xchat_android_core.home.bean.HomeTagInfo;
-import com.yizhuan.xchat_android_core.home.model.GameHomeModel;
-import com.yizhuan.xchat_android_core.market_verify.event.MarketVerifyUpdateEvent;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
-import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack;
import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-import java.util.ArrayList;
-import java.util.List;
-
-import io.reactivex.SingleObserver;
import io.reactivex.disposables.CompositeDisposable;
-import io.reactivex.disposables.Disposable;
/**
* @author jiajie
@@ -88,7 +74,6 @@ public class MainFragmentPresenter extends BaseMvpPresenter {
EventBus.getDefault().unregister(this);
}
-
@Override
public IMainFragmentView getMvpView() {
if (super.getMvpView() == null) {
@@ -98,81 +83,5 @@ public class MainFragmentPresenter extends BaseMvpPresenter {
}
}
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void onMarketVerifyUpdateEvent(MarketVerifyUpdateEvent event) {
- getMvpView().showByMarketCheckingStatus(new ArrayList<>());
- }
-
- /**
- * 获取首页banner
- */
- public void getHomeBanner(String type) {
- GameHomeModel.get()
- .getHomeBanner(type)
- .compose(bindToLifecycle())
- .subscribe(new SingleObserver>() {
- @Override
- public void onSubscribe(Disposable d) {
-
- }
-
- @Override
- public void onSuccess(List infos) {
- IMainFragmentView iMainFragmentView = getMvpView();
- if (iMainFragmentView != null)
- getMvpView().onGetHomeBannerSuccess(infos);
-
- }
-
- @Override
- public void onError(Throwable e) {
- LogUtil.e(e.getMessage());
- }
- });
- }
-
- /**
- * 获取首页tag
- */
- public void getHomeTag() {
- GameHomeModel.get()
- .getHomeTag()
- .compose(bindToLifecycle())
- .subscribe(new SingleObserver>() {
- @Override
- public void onSubscribe(Disposable d) {
-
- }
-
- @Override
- public void onSuccess(List infos) {
- IMainFragmentView iMainFragmentView = getMvpView();
- if (iMainFragmentView != null)
- getMvpView().onGetHomeTagSuccess(infos);
-
- }
-
- @Override
- public void onError(Throwable e) {
- LogUtil.e(e.getMessage());
- }
- });
- }
-
- @SuppressLint("CheckResult")
- public void getHomeConcerns() {
- GameHomeModel.get().getHomeConcerns().compose(RxHelper.handleException())
- .subscribe((result, throwable) -> {
- if (throwable != null) {
- if (mMvpView != null) {
- mMvpView.getFollowRoomFail();
- }
- } else {
- if (mMvpView != null) {
- mMvpView.getFollowRoomsSuccess(result);
- }
- }
- });
- }
}
diff --git a/app/src/main/java/com/yizhuan/erban/home/presenter/NewUserListPresenter.java b/app/src/main/java/com/yizhuan/erban/home/presenter/NewUserListPresenter.java
index 0fc7843a9..cf3e39d96 100644
--- a/app/src/main/java/com/yizhuan/erban/home/presenter/NewUserListPresenter.java
+++ b/app/src/main/java/com/yizhuan/erban/home/presenter/NewUserListPresenter.java
@@ -35,7 +35,7 @@ public class NewUserListPresenter extends BaseMvpPresenter> loadData(int curPage) {
- return HomeModel.get().loadNewUserList(
+ return HomeModel.INSTANCE.loadNewUserList(
String.valueOf(curPage),
String.valueOf(Constants.PAGE_SIZE)
)
diff --git a/app/src/main/java/com/yizhuan/erban/home/view/IMainFragmentView.java b/app/src/main/java/com/yizhuan/erban/home/view/IMainFragmentView.java
index 13120d3f0..f745fe915 100644
--- a/app/src/main/java/com/yizhuan/erban/home/view/IMainFragmentView.java
+++ b/app/src/main/java/com/yizhuan/erban/home/view/IMainFragmentView.java
@@ -1,14 +1,8 @@
package com.yizhuan.erban.home.view;
-import com.yizhuan.xchat_android_core.home.bean.HomeTagInfo;
-import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
-import com.yizhuan.xchat_android_core.home.bean.HomeConcernsInfo;
-import com.yizhuan.xchat_android_core.home.bean.TagListInfo;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
-import java.util.List;
-
/**
* @author jiajie
* @Description
@@ -17,69 +11,22 @@ import java.util.List;
public interface IMainFragmentView extends IMvpBaseView {
-
- /**
- * 请求打开房间结果
- *
- * @param openRoomFailType
- * @param arg
- */
- void requestOpenRoomResult(int openRoomFailType, Object... arg);
-
- void showByMarketCheckingStatus(List tagListInfoList);
-
- void getFollowRoomsSuccess(List infos);
-
- void getFollowRoomFail();
-
/**
* 退出房间
*/
void exitRoom(RoomInfo roomInfo);
- void onGetHomeBannerSuccess(List bannerInfos);
-
- void onGetHomeTagSuccess(List tagInfos);
/**
* 假实现,用于在View销毁后 调用View方法导致空指针问题,的一种解决方案
*/
class FakeIMainFragmentView implements IMainFragmentView {
- @Override
- public void requestOpenRoomResult(int openRoomFailType, Object... arg) {
-
- }
-
- @Override
- public void showByMarketCheckingStatus(List tagListInfoList) {
-
- }
-
- @Override
- public void getFollowRoomsSuccess(List infos) {
-
- }
-
- @Override
- public void getFollowRoomFail() {
-
- }
-
@Override
public void exitRoom(RoomInfo roomInfo) {
}
- @Override
- public void onGetHomeBannerSuccess(List bannerInfos) {
-
- }
-
- @Override
- public void onGetHomeTagSuccess(List tagInfos) {
-
- }
}
diff --git a/app/src/main/java/com/yizhuan/erban/luckymoney/dialog/LuckyMoneyDialog.java b/app/src/main/java/com/yizhuan/erban/luckymoney/dialog/LuckyMoneyDialog.java
index a6d6cabe5..fc8659dc1 100644
--- a/app/src/main/java/com/yizhuan/erban/luckymoney/dialog/LuckyMoneyDialog.java
+++ b/app/src/main/java/com/yizhuan/erban/luckymoney/dialog/LuckyMoneyDialog.java
@@ -20,7 +20,7 @@ import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_library.rxbus.RxBus;
import com.yizhuan.erban.luckymoney.view.LuckyMoneyDetailActivity;
-import com.yizhuan.erban.team.viewmodel.TeamViewModel;
+import com.yizhuan.erban.team.viewmodel.TeamVM;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.xchat_android_core.family.bean.FamilyInfo;
import com.yizhuan.xchat_android_core.family.model.FamilyModel;
@@ -43,7 +43,7 @@ public class LuckyMoneyDialog extends AppCompatDialog implements View.OnClickLis
private static final String TAG = "LuckyMoneyDialog";
private LuckyMoneyInfo luckyMoneyInfo;
- private TeamViewModel teamViewModel;
+ private TeamVM teamViewModel;
private FamilyInfo myFamilyInfo;
private String uuid;
private Disposable disposable;
@@ -68,7 +68,7 @@ public class LuckyMoneyDialog extends AppCompatDialog implements View.OnClickLis
window.setAttributes(params);
window.setWindowAnimations(R.style.ErbanCommonWindowAnimationStyle);
super.onCreate(savedInstanceState);
- teamViewModel = new TeamViewModel();
+ teamViewModel = new TeamVM();
myFamilyInfo = FamilyModel.Instance().getMyFamily();
// dialogManager = new DialogManager(getContext());
setCancelable(true);
diff --git a/app/src/main/java/com/yizhuan/erban/luckymoney/view/LuckyMoneyCreationActivity.java b/app/src/main/java/com/yizhuan/erban/luckymoney/view/LuckyMoneyCreationActivity.java
index 5ba8354b7..e26fb33ea 100644
--- a/app/src/main/java/com/yizhuan/erban/luckymoney/view/LuckyMoneyCreationActivity.java
+++ b/app/src/main/java/com/yizhuan/erban/luckymoney/view/LuckyMoneyCreationActivity.java
@@ -23,7 +23,7 @@ import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.utils.net.BalanceNotEnoughExeption;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
-import com.yizhuan.erban.team.viewmodel.TeamViewModel;
+import com.yizhuan.erban.team.viewmodel.TeamVM;
import com.yizhuan.xchat_android_core.family.bean.FamilyInfo;
import com.yizhuan.xchat_android_core.family.model.FamilyModel;
import com.yizhuan.xchat_android_core.share.bean.SessionType;
@@ -51,7 +51,7 @@ public class LuckyMoneyCreationActivity extends BaseBindingActivity> getLuckyMoneyMemberList() {
- return Single.create(e -> {
- ArrayList memberInfoList = new ArrayList<>();
- for (int i = 0; i < 10; i++) {
- TeamMemberInfo memberInfo = new TeamMemberInfo();
- memberInfo.setUid(i);
- memberInfo.setNick("家族成员名字要限制在十个字以内" + i);
- memberInfoList.add(memberInfo);
- }
- e.onSuccess(memberInfoList);
- });
- }
-}
diff --git a/app/src/main/java/com/yizhuan/erban/monsterhunting/viewmodel/MonsterHuntingViewModel.java b/app/src/main/java/com/yizhuan/erban/monsterhunting/viewmodel/MonsterHuntingViewModel.java
deleted file mode 100644
index 9cb2a63c3..000000000
--- a/app/src/main/java/com/yizhuan/erban/monsterhunting/viewmodel/MonsterHuntingViewModel.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.yizhuan.erban.monsterhunting.viewmodel;
-
-import android.util.Log;
-import com.yizhuan.erban.base.BaseViewModel;
-import com.yizhuan.erban.monsterhunting.bean.AttackMonsterResultInfo;
-import com.yizhuan.erban.monsterhunting.bean.UpdateMyGoldInfo;
-import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterAttackInfo;
-import com.yizhuan.xchat_android_core.monsterhunting.model.MonsterHuntingModel;
-import com.yizhuan.xchat_android_core.pay.PayModel;
-import java.util.Locale;
-
-public class MonsterHuntingViewModel extends BaseViewModel{
-
- private static final String TAG = "MonsterHuntingViewModel";
- public UpdateMyGoldInfo updateMyGoldInfo = new UpdateMyGoldInfo();
- public AttackMonsterResultInfo attackMonsterResultInfo = new AttackMonsterResultInfo();
-
-
- public void attackMonster(String monsterId,String roomUid,String magicId) {
- MonsterHuntingModel.get().attackMonster(monsterId, roomUid, magicId)
- .subscribe((serviceResult, throwable) -> {
- if (throwable != null) {
- // attack fail
- } else if (serviceResult != null && serviceResult.isSuccess()) {
- MonsterAttackInfo monsterAttackInfo = serviceResult.getData();
- // 扣钱,发送自定义消息,显示动画
- updateMyGold();
-
- refreshAttackMonsterResultInfo(serviceResult.getCode(),null, monsterAttackInfo,1);
-
- // 发送自定义消息,成功后显示动画
- MonsterHuntingModel.get().sendMonsterHuntingMagicMessage(monsterAttackInfo)
- .subscribe((chatRoomMessage, throwable1) ->{
- if (chatRoomMessage != null) {
- // 显示动画
- MonsterHuntingModel.get().onSendMonsterAttackMessageSuccess(chatRoomMessage);
- } else {
- throwable1.printStackTrace();
- }
- });
- } else if (serviceResult != null && !serviceResult.isSuccess()) {
- Log.e(TAG, String.format(Locale.getDefault(), "attackMonster: code:%s, message: %s",
- serviceResult.getCode(), serviceResult.getMessage()));
- refreshAttackMonsterResultInfo(serviceResult.getCode(), serviceResult.getErrorMessage(), null, 2);
- } else {
- refreshAttackMonsterResultInfo(-1, serviceResult.getErrorMessage(), null, 3);
- }
- });
- }
-
- private void refreshAttackMonsterResultInfo(int code, String errorMessage, MonsterAttackInfo monsterAttackInfo, int status) {
- attackMonsterResultInfo.setCode(code);
- attackMonsterResultInfo.setErrorMessage(errorMessage);
- attackMonsterResultInfo.setMonsterAttackInfo(monsterAttackInfo);
- attackMonsterResultInfo.setStatus(status);
- }
-
- public void updateMyGold() {
- PayModel.get().getMyRemoteWalletInfo()
- .subscribe((walletInfo, throwable) -> {
- if (walletInfo != null) {
- updateMyGoldInfo.setWalletInfo(walletInfo);
- updateMyGoldInfo.setSucceed(true);
- } else if (throwable != null) {
- updateMyGoldInfo.setSucceed(false);
- }
- });
- }
-
-}
diff --git a/app/src/main/java/com/yizhuan/erban/team/view/AddMemberActivity.java b/app/src/main/java/com/yizhuan/erban/team/view/AddMemberActivity.java
index 3cef711dc..8cac60612 100644
--- a/app/src/main/java/com/yizhuan/erban/team/view/AddMemberActivity.java
+++ b/app/src/main/java/com/yizhuan/erban/team/view/AddMemberActivity.java
@@ -14,7 +14,7 @@ import com.yizhuan.erban.databinding.ActivityAddTeamMemberBinding;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.erban.team.adapter.AddTeamMemberAdapter;
-import com.yizhuan.erban.team.viewmodel.FamilyMemberViewModel;
+import com.yizhuan.erban.team.viewmodel.FamilyMemberVM;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.family.bean.FamilyMemberInfo;
@@ -35,7 +35,7 @@ public class AddMemberActivity extends BaseBindingActivity selectMembers = new ArrayList<>();
@@ -59,7 +59,7 @@ public class AddMemberSearchActivity extends BaseBindingActivity members = new ArrayList<>();
@@ -43,7 +43,7 @@ public class CreateTeamMessageActivity extends BaseBindingTakePhotoActivity {
private TeamListAdapter adapter;
- private TeamViewModel teamViewModel;
+ private TeamVM teamViewModel;
private int type;
private SelectFriendActivity friendActivity;
@@ -50,7 +50,7 @@ public class TeamListFragment extends BaseBindingFragment {
private EditText teamName;
- private TeamViewModel teamViewModel;
+ private TeamVM teamViewModel;
private String tid;
private TeamInfo teamInfo;
@@ -39,7 +39,7 @@ public class UpdateTeamNameActivity extends BaseBindingActivity
- HomeModel.get().commitFeedback(AuthModel.get().getCurrentUid(),
+ HomeModel.INSTANCE.commitFeedback(AuthModel.get().getCurrentUid(),
edtContent.getText().toString(),
edtContact.getText().toString()
)
diff --git a/app/src/main/java/com/yizhuan/erban/ui/utils/RVDelegate.java b/app/src/main/java/com/yizhuan/erban/ui/utils/RVDelegate.java
index 7c1e65b62..8ee01c282 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/utils/RVDelegate.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/utils/RVDelegate.java
@@ -10,6 +10,8 @@ import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.common.util.sys.NetworkUtil;
import com.yizhuan.erban.base.IDataStatus;
import com.yizhuan.erban.common.EmptyViewHelper;
+import com.yizhuan.xchat_android_core.bean.response.ListResult;
+import com.yizhuan.xchat_android_core.utils.LogUtils;
import com.yizhuan.xchat_android_library.utils.ListUtils;
@@ -41,6 +43,18 @@ public class RVDelegate {
adapter.bindToRecyclerView(recyclerView);
}
+ public void loadData(ListResult result) {
+ if (result == null) {
+ LogUtils.d("result == null,skip layout");
+ return;
+ }
+ if (result.isSuccess()) {
+ loadData(result.getData(), result.isRefresh());
+ } else {
+ loadErr(result.isSuccess());
+ }
+ }
+
public void loadData(List data, boolean isRefresh) {
if (isRefresh) {
setNewData(data);
diff --git a/app/src/main/res/drawable-xhdpi/bg_home_top.png b/app/src/main/res/drawable-xhdpi/bg_home_top.png
new file mode 100644
index 000000000..5648dcfcd
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/bg_home_top.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_home_rank.png b/app/src/main/res/drawable-xhdpi/ic_home_rank.png
index 41f870a1a..04399fed1 100644
Binary files a/app/src/main/res/drawable-xhdpi/ic_home_rank.png and b/app/src/main/res/drawable-xhdpi/ic_home_rank.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_home_search.png b/app/src/main/res/drawable-xhdpi/ic_home_search.png
index 37dff0dc4..97e5c0d30 100644
Binary files a/app/src/main/res/drawable-xhdpi/ic_home_search.png and b/app/src/main/res/drawable-xhdpi/ic_home_search.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/bg_home_search.xml b/app/src/main/res/drawable-xxhdpi/bg_home_search.xml
index 17e0de648..db705e3b3 100644
--- a/app/src/main/res/drawable-xxhdpi/bg_home_search.xml
+++ b/app/src/main/res/drawable-xxhdpi/bg_home_search.xml
@@ -2,7 +2,7 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_game_home.xml b/app/src/main/res/layout/fragment_game_home.xml
deleted file mode 100644
index db20552e5..000000000
--- a/app/src/main/res/layout/fragment_game_home.xml
+++ /dev/null
@@ -1,259 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
new file mode 100644
index 000000000..fb7b6752b
--- /dev/null
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home_room_tab.xml b/app/src/main/res/layout/fragment_home_room_tab.xml
index 304ddd60e..c98dd3b15 100644
--- a/app/src/main/res/layout/fragment_home_room_tab.xml
+++ b/app/src/main/res/layout/fragment_home_room_tab.xml
@@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context="com.yizhuan.erban.home.fragment.HomeOtherTabFragment">
+ >
-
-
-
-
-
-
-
-
diff --git a/app/src/module_community/res/layout/fragment_home_dynamic.xml b/app/src/main/res/layout/fragment_hot_room.xml
similarity index 54%
rename from app/src/module_community/res/layout/fragment_home_dynamic.xml
rename to app/src/main/res/layout/fragment_hot_room.xml
index bcb34cb77..29e1d07b6 100644
--- a/app/src/module_community/res/layout/fragment_home_dynamic.xml
+++ b/app/src/main/res/layout/fragment_hot_room.xml
@@ -1,6 +1,7 @@
-
@@ -9,6 +10,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
- />
+ android:paddingStart="8dp"
+ android:paddingEnd="8dp" />
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_ktv.xml b/app/src/main/res/layout/fragment_ktv.xml
deleted file mode 100644
index 7af331331..000000000
--- a/app/src/main/res/layout/fragment_ktv.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml
deleted file mode 100644
index c15027573..000000000
--- a/app/src/main/res/layout/fragment_main.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/fragment_party.xml b/app/src/main/res/layout/fragment_party.xml
new file mode 100644
index 000000000..c0cee0ef5
--- /dev/null
+++ b/app/src/main/res/layout/fragment_party.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_recommend.xml b/app/src/main/res/layout/fragment_recommend.xml
index 2958af2cf..34237b5e9 100644
--- a/app/src/main/res/layout/fragment_recommend.xml
+++ b/app/src/main/res/layout/fragment_recommend.xml
@@ -1,24 +1,126 @@
-
+
-
+
+
+
+
+
+
+
+
-
+
+
-
-
-
+ android:background="@color/transparent"
+ app:elevation="0dp"
+ app:layout_behavior="com.yizhuan.erban.ui.widget.AppBarLayoutBehavior">
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_room_common.xml b/app/src/main/res/layout/item_room_common.xml
new file mode 100644
index 000000000..11b127ebf
--- /dev/null
+++ b/app/src/main/res/layout/item_room_common.xml
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xhdpi/ic_home_search.png b/app/src/main/res/mipmap-xhdpi/ic_home_search.png
deleted file mode 100644
index ee5e07a79..000000000
Binary files a/app/src/main/res/mipmap-xhdpi/ic_home_search.png and /dev/null differ
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 2e2cd30ea..aecb1e018 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -261,6 +261,7 @@
#ffc160
#7ee7f6
#999999
+ #444444
#4D4D4D
#CCCCCC
#99000000
diff --git a/app/src/module_community/java/com/yizhuan/erban/community/square/SquareFragment.java b/app/src/module_community/java/com/yizhuan/erban/community/square/SquareFragment.java
index 13dbcc50e..b9efd7ce2 100644
--- a/app/src/module_community/java/com/yizhuan/erban/community/square/SquareFragment.java
+++ b/app/src/module_community/java/com/yizhuan/erban/community/square/SquareFragment.java
@@ -215,7 +215,7 @@ public class SquareFragment extends BaseFragment implements TopMagicIndicatorAd
@SuppressWarnings("CheckResult")
private void getUnReadCount() {
- HomeModel.get().getUnreadCount(AuthModel.get().getCurrentUid())
+ HomeModel.INSTANCE.getUnreadCount(AuthModel.get().getCurrentUid())
.compose(bindToLifecycle())
.subscribe(new BiConsumer() {
@Override
diff --git a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/team/activity/HallTeamMessageActivity.java b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/team/activity/HallTeamMessageActivity.java
index 760588dcf..df840ebee 100644
--- a/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/team/activity/HallTeamMessageActivity.java
+++ b/app/src/module_labour_union/java/com/yizhuan/erban/module_hall/team/activity/HallTeamMessageActivity.java
@@ -31,7 +31,7 @@ import com.yizhuan.erban.module_hall.team.HTeamDataManager;
import com.yizhuan.erban.module_hall.team.adapter.HTeamMemberListAdapter;
import com.yizhuan.erban.team.view.NimTeamManagementActivity;
import com.yizhuan.erban.team.view.NimTeamMessageFragment;
-import com.yizhuan.erban.team.viewmodel.TeamViewModel;
+import com.yizhuan.erban.team.viewmodel.TeamVM;
import com.yizhuan.erban.ui.im.avtivity.BaseMessageActivity;
import com.yizhuan.xchat_android_core.initial.InitialModel;
import com.yizhuan.xchat_android_core.initial.bean.InitInfo;
@@ -81,7 +81,7 @@ public class HallTeamMessageActivity extends BaseMessageActivity {
private NimTeamMessageFragment fragment;
- private TeamViewModel teamViewModel;
+ private TeamVM teamViewModel;
private ImageView teamAvatar;
@@ -108,7 +108,7 @@ public class HallTeamMessageActivity extends BaseMessageActivity {
HTeamDataManager.get().init(sessionId);
findViews();
- teamViewModel = new TeamViewModel();
+ teamViewModel = new TeamVM();
openTeamManagementPage();
diff --git a/app/src/module_room_chat/java/com/yizhuan/tutu/room_chat/activity/NimTeamRoomMessageActivity.java b/app/src/module_room_chat/java/com/yizhuan/tutu/room_chat/activity/NimTeamRoomMessageActivity.java
index 0b67ca25e..cad15f2de 100644
--- a/app/src/module_room_chat/java/com/yizhuan/tutu/room_chat/activity/NimTeamRoomMessageActivity.java
+++ b/app/src/module_room_chat/java/com/yizhuan/tutu/room_chat/activity/NimTeamRoomMessageActivity.java
@@ -7,7 +7,6 @@ import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
-import android.widget.Toast;
import com.netease.nim.uikit.api.NimUIKit;
import com.netease.nim.uikit.api.model.SimpleCallback;
@@ -30,7 +29,7 @@ import com.trello.rxlifecycle3.android.ActivityEvent;
import com.yizhuan.erban.R;
import com.yizhuan.erban.team.view.NimTeamMessageFragment;
import com.yizhuan.erban.team.view.TeamMemberListActivity;
-import com.yizhuan.erban.team.viewmodel.TeamViewModel;
+import com.yizhuan.erban.team.viewmodel.TeamVM;
import com.yizhuan.erban.ui.im.actions.FamilyGameAction;
import com.yizhuan.erban.ui.im.actions.LuckyMoneyAction;
import com.yizhuan.erban.ui.im.avtivity.BaseMessageActivity;
@@ -81,7 +80,7 @@ public class NimTeamRoomMessageActivity extends BaseMessageActivity {
private NimTeamMessageFragment fragment;
- private TeamViewModel teamViewModel;
+ private TeamVM teamViewModel;
private View rootView;
@@ -113,7 +112,7 @@ public class NimTeamRoomMessageActivity extends BaseMessageActivity {
findViews();
- teamViewModel = new TeamViewModel();
+ teamViewModel = new TeamVM();
registerTeamUpdateObserver(true);
diff --git a/core/build.gradle b/core/build.gradle
index fa05cce45..1f316f3cb 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -100,7 +100,7 @@ dependencies {
// RxJava support for Room
api 'androidx.room:room-rxjava2:2.2.5'
- api 'com.tencent.bugly:crashreport_upgrade:1.4.2'
+ api 'com.tencent.bugly:crashreport_upgrade:1.5.23'
api project(':nim_uikit')
api project(':library')
diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/GameHomeModel.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/GameHomeModel.java
index 9832b52e1..2e9c8a2c9 100644
--- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/GameHomeModel.java
+++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/GameHomeModel.java
@@ -67,7 +67,7 @@ public class GameHomeModel extends BaseModel {
}
public Single> getHomeTabHome(String tabId) {
- return api.apiHomeTabHome(tabId, String.valueOf(AuthModel.get().getCurrentUid()),
+ return api.apiHomeTabHome(null, String.valueOf(AuthModel.get().getCurrentUid()),
CommunityConstant.VERSION_VALID_TYPE,
AuthModel.get().getTicket())
.compose(RxHelper.handleBeanData())
@@ -171,7 +171,7 @@ public class GameHomeModel extends BaseModel {
* @param ticket
* @return
*/
- @GET("/home/tab/home")
+ @GET("/home/tab/homeV2")
Single>> apiHomeTabHome(
@Query("tabId") String tabId,
@Query("uid") String uid,
diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt
index 8bdbeced3..56d52cf64 100644
--- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt
+++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt
@@ -1,44 +1,23 @@
-package com.yizhuan.xchat_android_core.home.model;
+package com.yizhuan.xchat_android_core.home.model
-import com.yizhuan.xchat_android_core.auth.AuthModel;
-import com.yizhuan.xchat_android_core.base.BaseModel;
-import com.yizhuan.xchat_android_core.bean.response.ServiceResult;
-import com.yizhuan.xchat_android_core.community.bean.UnReadCountInfo;
-import com.yizhuan.xchat_android_core.home.bean.TabInfo;
-import com.yizhuan.xchat_android_core.user.bean.UserInfo;
-import com.yizhuan.xchat_android_core.utils.net.RxHelper;
-import com.yizhuan.xchat_android_library.net.rxnet.RxNet;
+import com.yizhuan.xchat_android_core.auth.AuthModel
+import com.yizhuan.xchat_android_core.base.BaseModel
+import com.yizhuan.xchat_android_core.bean.response.ServiceResult
+import com.yizhuan.xchat_android_core.community.CommunityConstant
+import com.yizhuan.xchat_android_core.community.bean.UnReadCountInfo
+import com.yizhuan.xchat_android_core.home.bean.*
+import com.yizhuan.xchat_android_core.user.bean.UserInfo
+import com.yizhuan.xchat_android_core.utils.net.RxHelper
+import com.yizhuan.xchat_android_core.utils.net.launchRequest
+import com.yizhuan.xchat_android_library.net.rxnet.RxNet
+import io.reactivex.Single
+import retrofit2.http.GET
+import retrofit2.http.POST
+import retrofit2.http.Query
-import java.util.ArrayList;
-import java.util.List;
+object HomeModel : BaseModel() {
-import io.reactivex.Single;
-import io.reactivex.SingleSource;
-import io.reactivex.functions.Function;
-import retrofit2.http.GET;
-import retrofit2.http.POST;
-import retrofit2.http.Query;
-
-public class HomeModel extends BaseModel implements IHomeModel {
- private static final String TAG = "HomeModel";
-
- private volatile static IHomeModel instance;
- private Api api;
-
- private HomeModel() {
- api = RxNet.create(Api.class);
- }
-
- public static IHomeModel get() {
- if (instance == null) {
- synchronized (HomeModel.class) {
- if (instance == null) {
- instance = new HomeModel();
- }
- }
- }
- return instance;
- }
+ private val api = RxNet.create(Api::class.java)
/**
* 提交反馈
@@ -48,26 +27,21 @@ public class HomeModel extends BaseModel implements IHomeModel {
* @param contact
* @return
*/
- @Override
- public Single commitFeedback(long uid, String feedbackDesc, String contact) {
+ fun commitFeedback(uid: Long, feedbackDesc: String, contact: String): Single {
return api.commitFeedback(
- String.valueOf(uid),
- feedbackDesc,
- contact,
- AuthModel.get().getTicket()
+ uid.toString(),
+ feedbackDesc,
+ contact,
+ AuthModel.get().ticket
)
- .flatMap(new Function>() {
- @Override
- public SingleSource apply(ServiceResult serviceResult) throws Exception {
- if (serviceResult.isSuccess()) {
- return Single.just("反馈成功");
-
- } else {
- return Single.error(new Throwable(serviceResult.getMessage()));
- }
- }
- })
- .compose(RxHelper.handleSchedulers());
+ .flatMap { serviceResult ->
+ if (serviceResult.isSuccess) {
+ Single.just("反馈成功")
+ } else {
+ Single.error(Throwable(serviceResult.message))
+ }
+ }
+ .compose(RxHelper.handleSchedulers())
}
/**
@@ -77,49 +51,113 @@ public class HomeModel extends BaseModel implements IHomeModel {
* @param pageSize
* @return
*/
- @Override
- public Single> loadNewUserList(String page,
- String pageSize) {
+ fun loadNewUserList(
+ page: String,
+ pageSize: String
+ ): Single> {
return api.loadNewUserList(
- page,
- pageSize
+ page,
+ pageSize
)
- .compose(RxHelper.handleSchedulers())
- .flatMap(listServiceResult -> {
- if (listServiceResult != null) {
- if (listServiceResult.isSuccess()) {
- return Single.just(listServiceResult.getData() != null ?
- listServiceResult.getData() : new ArrayList<>());
- } else {
- return Single.error(new Throwable(listServiceResult.getMessage()));
- }
- } else {
- return Single.error(new Throwable("发生异常"));
- }
- });
- }
-
- @Override
- public Single getUnreadCount(long uid) {
- return api.getUnreadCount(uid).flatMap(new Function, SingleSource>() {
- @Override
- public SingleSource apply(ServiceResult unReadCountInfoServiceResult) throws Exception {
- if (unReadCountInfoServiceResult.isSuccess()) {
- UnReadCountInfo unReadCountInfo = unReadCountInfoServiceResult.getData();
- if (unReadCountInfo != null) {
- return Single.just(unReadCountInfoServiceResult.getData().getTotal());
- } else {
- return Single.just(0);
- }
+ .compose(RxHelper.handleSchedulers())
+ .flatMap {
+ if (it.isSuccess) {
+ return@flatMap Single.just(it.data)
} else {
- return Single.just(0);
+ return@flatMap Single.error(Throwable(it.message))
}
}
- }).compose(RxHelper.handleSchAndExce());
}
- private interface Api {
+ fun getUnreadCount(uid: Long): Single {
+ return api.getUnreadCount(uid)
+ .flatMap { unReadCountInfoServiceResult ->
+ if (unReadCountInfoServiceResult.isSuccess) {
+ val unReadCountInfo = unReadCountInfoServiceResult.data
+ if (unReadCountInfo != null) {
+ Single.just(unReadCountInfoServiceResult.data?.total ?: 0)
+ } else {
+ Single.just(0)
+ }
+ } else {
+ Single.just(0)
+ }
+ }.compose(RxHelper.handleSchAndExce())
+ }
+ val homePlay: Single>
+ get() = api.apiHomePlay()
+ .compose(RxHelper.handleBeanData())
+ .compose(RxHelper.handleSchedulers())
+
+ val homePlayV2: Single>
+ get() = api.apiHomePlayV2()
+ .compose(RxHelper.handleBeanData())
+ .compose(RxHelper.handleSchedulers())
+
+ val homeTag: Single>
+ get() = api.apiHomeTag(
+ AuthModel.get().currentUid.toString(),
+ CommunityConstant.VERSION_VALID_TYPE,
+ AuthModel.get().ticket
+ )
+ .compose(RxHelper.handleBeanData())
+ .compose(RxHelper.handleSchedulers())
+
+ fun getHomeTabMap(tabId: String, page: Int, pageSize: Int): Single> {
+ return api.apiHomeTabMap(
+ tabId, page.toString(), pageSize.toString(), AuthModel.get().currentUid.toString(),
+ CommunityConstant.VERSION_VALID_TYPE,
+ AuthModel.get().ticket
+ )
+ .compose(RxHelper.handleBeanData())
+ .compose(RxHelper.handleSchedulers())
+ }
+
+ fun getHomeTabHome(tabId: String): Single> {
+ return api.apiHomeTabHome(
+ tabId, AuthModel.get().currentUid.toString(),
+ CommunityConstant.VERSION_VALID_TYPE,
+ AuthModel.get().ticket
+ )
+ .compose(RxHelper.handleBeanData())
+ .compose(RxHelper.handleSchedulers())
+ }
+
+ suspend fun getHomeBanner(type: String): List? =
+ launchRequest {
+ api.apiHomeBanner(
+ type, AuthModel.get().currentUid.toString(),
+ CommunityConstant.VERSION_VALID_TYPE,
+ AuthModel.get().ticket
+ )
+ }
+
+ suspend fun getHotRoom(pageNum: Int, pageSize: Int): List? =
+ launchRequest {
+ api.getHotRoom(pageNum, pageSize)
+ }
+
+
+ val homeConcerns: Single>
+ get() = api.apiHomeConcerns(
+ AuthModel.get().currentUid.toString(),
+ CommunityConstant.VERSION_VALID_TYPE,
+ AuthModel.get().ticket
+ )
+ .compose(RxHelper.handleBeanData())
+ .compose(RxHelper.handleSchedulers())
+
+ val roomShortcut: Single
+ get() = api.apiRoomShortcut(
+ AuthModel.get().currentUid.toString(),
+ CommunityConstant.VERSION_VALID_TYPE,
+ AuthModel.get().ticket
+ )
+ .compose(RxHelper.handleBeanData())
+ .compose(RxHelper.handleSchedulers())
+
+ private interface Api {
/**
* 提交反馈
*
@@ -130,18 +168,20 @@ public class HomeModel extends BaseModel implements IHomeModel {
* @return
*/
@POST("/feedback")
- Single commitFeedback(@Query("uid") String uid,
- @Query("feedbackDesc") String feedbackDesc,
- @Query("contact") String contact,
- @Query("ticket") String ticket);
+ fun commitFeedback(
+ @Query("uid") uid: String,
+ @Query("feedbackDesc") feedbackDesc: String,
+ @Query("contact") contact: String,
+ @Query("ticket") ticket: String
+ ): Single>
/**
* 获取首页tab数据
*
* @return
*/
- @GET("/room/tag/v3/top")
- Single>> getMainTabList();
+ @get:GET("/room/tag/v3/top")
+ val mainTabList: Single>>
/**
* 获取新人列表
@@ -151,8 +191,10 @@ public class HomeModel extends BaseModel implements IHomeModel {
* @return
*/
@GET("/user/list/new")
- Single>> loadNewUserList(@Query("page") String page,
- @Query("pageSize") String pageSize);
+ fun loadNewUserList(
+ @Query("page") page: String,
+ @Query("pageSize") pageSize: String
+ ): Single>>
/**
* 获取互动消息未读数量
@@ -161,6 +203,129 @@ public class HomeModel extends BaseModel implements IHomeModel {
* @return
*/
@POST("interactive/unreadCount")
- Single> getUnreadCount(@Query("uid") long uid);
+ fun getUnreadCount(@Query("uid") uid: Long): Single>
+
+
+ /**
+ * 首页交友扩列
+ *
+ * @return -
+ */
+ @GET("/home/play")
+ fun apiHomePlay(): Single>>
+
+ /**
+ * 首页聊天交友
+ *
+ * @return -
+ */
+ @GET("/home/roomListV2")
+ fun apiHomePlayV2(): Single>>
+
+ /**
+ * 首页推荐房间标签
+ *
+ * @param uid
+ * @param types
+ * @param ticket
+ * @return
+ */
+ @GET("/home/tag")
+ fun apiHomeTag(
+ @Query("uid") uid: String,
+ @Query("types") types: String,
+ @Query("ticket") ticket: String
+ ): Single>>
+
+ /**
+ * 首页更多房间
+ *
+ * @param tabId
+ * @param page
+ * @param pageSize
+ * @param uid
+ * @param types
+ * @param ticket
+ * @return
+ */
+ @GET("/home/tab/map")
+ fun apiHomeTabMap(
+ @Query("tabId") tabId: String,
+ @Query("page") page: String,
+ @Query("pageSize") pageSize: String,
+ @Query("uid") uid: String,
+ @Query("types") types: String,
+ @Query("ticket") ticket: String
+ ): Single>>
+
+ /**
+ * 首页推荐房间
+ *
+ * @param tabId
+ * @param uid
+ * @param types
+ * @param ticket
+ * @return
+ */
+ @GET("/home/tab/home")
+ fun apiHomeTabHome(
+ @Query("tabId") tabId: String,
+ @Query("uid") uid: String,
+ @Query("types") types: String,
+ @Query("ticket") ticket: String
+ ): Single>>
+
+ /**
+ * 首页Banner
+ *
+ * @param type
+ * @param uid
+ * @param types
+ * @param ticket
+ * @return
+ */
+ @GET("/home/banner")
+ suspend fun apiHomeBanner(
+ @Query("type") type: String,
+ @Query("uid") uid: String,
+ @Query("types") types: String,
+ @Query("ticket") ticket: String
+ ): ServiceResult>
+
+ /**
+ * 首页热门房间
+ *
+ * @return
+ */
+ @GET("/home/hotRoom")
+ suspend fun getHotRoom(
+ @Query("pageNum") pageNum: Int,
+ @Query("pageSize") pageSize: Int
+ ): ServiceResult>
+
+
+ /**
+ * 首页顶部收藏房间列表
+ *
+ * @param uid
+ * @param types
+ * @param ticket
+ * @return
+ */
+ @GET("/home/concerns")
+ fun apiHomeConcerns(
+ @Query("uid") uid: String,
+ @Query("types") types: String,
+ @Query("ticket") ticket: String
+ ): Single>>
+
+
+ @GET("/room/shortcut/recommend")
+ fun apiRoomShortcut(
+ @Query("uid") uid: String,
+ @Query("types") types: String,
+ @Query("ticket") ticket: String
+ ): Single>
}
-}
+
+}
\ No newline at end of file
diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/IHomeModel.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/IHomeModel.java
deleted file mode 100644
index 4df655f16..000000000
--- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/IHomeModel.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.yizhuan.xchat_android_core.home.model;
-
-import com.yizhuan.xchat_android_core.base.IModel;
-import com.yizhuan.xchat_android_core.user.bean.UserInfo;
-
-import java.util.List;
-
-import io.reactivex.Single;
-
-public interface IHomeModel extends IModel {
-
- /**
- * 提交反馈
- *
- * @param uid
- * @param feedbackDesc
- * @param contact
- * @return
- */
- Single commitFeedback(long uid, String feedbackDesc, String contact);
-
- /**
- * 获取新人列表
- *
- * @param page
- * @param pageSize
- * @return
- */
- Single> loadNewUserList(String page,
- String pageSize);
-
-
- Single getUnreadCount(long uid);
-}
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/bean/response/ListResult.kt b/core/src/main/java/com/yizhuan/xchat_android_core/bean/response/ListResult.kt
new file mode 100644
index 000000000..845284d23
--- /dev/null
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/bean/response/ListResult.kt
@@ -0,0 +1,22 @@
+package com.yizhuan.xchat_android_core.bean.response
+
+data class ListResult(
+ val isSuccess: Boolean,
+ val isRefresh: Boolean,
+ val data: List? = null
+) {
+ companion object {
+
+ fun success(data: List?, pageNum: Int): ListResult {
+ return ListResult(true, pageNum == 1, data)
+ }
+
+ fun failed(pageNum: Int): ListResult {
+ return ListResult(false, pageNum == 1, null)
+ }
+ }
+
+}
+
+
+
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/utils/net/RxExtension.kt b/core/src/main/java/com/yizhuan/xchat_android_core/utils/net/RxExtension.kt
index 7ef93873b..f5db7588f 100644
--- a/core/src/main/java/com/yizhuan/xchat_android_core/utils/net/RxExtension.kt
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/utils/net/RxExtension.kt
@@ -78,3 +78,21 @@ fun Single.io2main(): Single {
}
+suspend inline fun launchRequest(
+ crossinline block: suspend () -> ServiceResult
+): T? {
+ return try {
+ block()
+ } catch (e: Exception) {
+ e.printStackTrace()
+ if (e is IOException) throw Throwable("网络异常,请检查你的网络再试")
+ else throw e
+ }.run {
+ if (isSuccess) {
+ data
+ } else {
+ throw ServerException(message, code)
+ }
+ }
+}
+
diff --git a/core/src/model_community/java/com/yizhuan/xchat_android_core/community/bean/UnReadCountInfo.java b/core/src/model_community/java/com/yizhuan/xchat_android_core/community/bean/UnReadCountInfo.java
index abad71ceb..665af358c 100644
--- a/core/src/model_community/java/com/yizhuan/xchat_android_core/community/bean/UnReadCountInfo.java
+++ b/core/src/model_community/java/com/yizhuan/xchat_android_core/community/bean/UnReadCountInfo.java
@@ -2,9 +2,7 @@ package com.yizhuan.xchat_android_core.community.bean;
import java.io.Serializable;
-import lombok.Data;
-@Data
public class UnReadCountInfo implements Serializable {
/**
@@ -20,4 +18,44 @@ public class UnReadCountInfo implements Serializable {
private int total;
private int reply;
private int like;
+
+ public int getComment() {
+ return comment;
+ }
+
+ public void setComment(int comment) {
+ this.comment = comment;
+ }
+
+ public int getShare() {
+ return share;
+ }
+
+ public void setShare(int share) {
+ this.share = share;
+ }
+
+ public int getTotal() {
+ return total;
+ }
+
+ public void setTotal(int total) {
+ this.total = total;
+ }
+
+ public int getReply() {
+ return reply;
+ }
+
+ public void setReply(int reply) {
+ this.reply = reply;
+ }
+
+ public int getLike() {
+ return like;
+ }
+
+ public void setLike(int like) {
+ this.like = like;
+ }
}